SSHおよびSCPのオートコンプリートサーバー名

SSHおよびSCPのオートコンプリートサーバー名

一部のサーバーを構成しました。~/.ssh/configalphaのような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のコピー)は非常に貴重であり、それなしではこのスクリプトを書くことはできません。ありがとうスティーブ・ケンプ素晴らしいガイドを書いてくれてありがとう!

おすすめ記事