
私の.ssh/config
仮名はますます増え始め、それを覚えていることはますます困難になりました。
増え続けるコレクションをより効果的に管理するための提案はありますか?
たとえば、特定のタイプを入力するとオートコンプリートにssh
なりますか?
答え1
Bashのための非常に悪い1-完成:
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
完了機能の外で(たとえば、シェルの初期化中)、初期化を実行できます。それ以外の場合は、完了テストごとに3つのプログラムが生成されます。構成ファイルは頻繁に変更されないため、必要に応じて手動で初期化関数を呼び出すことができます。
1)たとえば、行末でのみ完了するので、リモートホスト名を入力して完了する前に、すべてのオプションを宣言する必要があります。