一部のサーバーを構成しました。~/.ssh/config
、alpha
のようなbeta
。構成されたサーバーの名前をコマンドし、オートコンプリートするようにBashをどのように構成しますか?$ ssh alTab
$ scp file.tgz alTab
サーバーを追加したくありません。その他サーバーを定期的に追加および削除し、リストがかなり大きいため、一度に1つのファイル(Bash配列など)が追加されます。
これはKubuntu 12.10にあり、私は持っていますバッシュ完了インストールする。
ベストアンサー1
それを発見! !
Ubuntuの下にあるようですのエントリがハッシュされ~/.ssh/known_hosts
ました。そのため、SSH完了では読み取れません。これはバグではなく機能です。を追加してもホストハッシュを防ぐことはできHashKnownHosts no
ません。~/.ssh/config
/etc/ssh/ssh_config
ところで、私が興味を持っているホストはでも見つかります~/.ssh/config
。以下は、このファイルからエントリを読み取るBash完了スクリプトです。
_ssh()
{
local cur prev opts
COMPREPLY=()
cur="${COMP_WORDS[COMP_CWORD]}"
prev="${COMP_WORDS[COMP_CWORD-1]}"
opts=$(grep '^Host' ~/.ssh/config ~/.ssh/config.d/* 2>/dev/null | grep -v '[?*]' | cut -d ' ' -f 2-)
COMPREPLY=( $(compgen -W "$opts" -- ${cur}) )
return 0
}
complete -F _ssh ssh
そのスクリプトを挿入し、/etc/bash_completion.d/ssh
次のようにインポートします。
$ . /etc/bash_completion.d/ssh
私が見つけたこのガイド(Archive.orgのコピー)は非常に貴重であり、それなしではこのスクリプトを書くことはできません。ありがとうスティーブ・ケンプ素晴らしいガイドを書いてくれてありがとう!