Довольно хреновое завершение 1 для Bash:
function _ssh_complete () {
local match=${COMP_WORDS[${COMP_CWORD}]}
local hosts=
local default=
local _ssh_complete_hostlist=$( \
grep "^\s*Host\s*=" ~/.ssh/config 2>/dev/null \
| sed -r "s/^[^=]+= *//;s/ /\n/g" \
| sort )
for h in $_ssh_complete_hostlist; do
if [[ $h =~ ^$match ]]; then
hosts="$hosts $h"
fi
done
if ! (( ${COMP_CWORD} == ${#COMP_WORDS[@]}-1 )); then
default=$( compgen -f ${COMP_WORDS[${COMP_CWORD}]} )
fi
COMPREPLY=($hosts $default)
}
complete -F _ssh_complete ssh
Вы, вероятно, захотите инициализировать $ _ ssh_complete_hostlist
вне функции завершения (например, во время инициализации оболочки), иначе вы будете будет порождать три программы за каждое завершенное испытание. Файл конфигурации меняется не так часто, как это было бы необходимо, и вы всегда можете вызвать функцию инициализации вручную, когда это необходимо.
1) например, он завершается только в конце строки, поэтому вы должны сначала указать любые параметры и только затем начать вводить и дополнять имя удаленного хоста.
Это было результатом того, что в этой группе не было [11640] предохранителя, и она не была добавлена к этой группе. Чтобы создать группу и быть добавленным в нее, выполните:[12115]Выход и обратно, чтобы применить изменения в группе.