2019/07/29

bashでsshのホスト名をtab補完する方法






sshで登録したホスト名をサクっと一覧で見る方法メモ


vi ~/.bash_profile

vimで開いて編集する
iで編集モードに
function _compreply_ssh(){
  COMPREPLY=(`cat ~/.ssh/config | grep -i -e '^host' | cut -d " " -f 2 | grep -E "$2"`)
}
complete -F _compreply_ssh ssh

.bash_profileに上記を追加する
escキーを押して入力モードを終了
:wqで保存して終了

Host test-server-001
Host test-server-002
Host main-server
Host stg-server

~/.ssh/config にこんなhostが登録してあった場合
$ ssh 

ssh半角スペースまで打った段階で、tabキーを2回押すと
test-server-001 test-server-002 main-server stg-server

こんな感じで候補を全て表示してくれる


ちなみに
$ ssh m

で tab を押すと main-server のみ表示される