.ssh/configに記載されたホストをタブ補完する
.ssh/configに記載されたホストをタブ補完する
概要
ssh実行時に.ssh/configに記載されたホスト名を補完したいなぁとおもったのでやってみた。
同じことは他の方もやっていたので、それを参考にした。その結果ほとんどオリジナリティはない。
あくまで一例として。
参考
.ssh/config 設定内容(サンプル)
.ssh/config
HOST host001 HOSTNAME 1.1.1.1 HOST host002 HOSTNAME 1.1.1.2
.bashrcへの追記内容
.bashrc
_ssh_comp_func () { local cur cur=${COMP_WORDS[COMP_CWORD]} COMPREPLY=($(grep 'HOST ' .ssh/config | awk '{print $2}' | grep "${cur}")) } complete -F _ssh_comp_func ssh
curに現在の補完中のホスト名が入る。
補完が進むと補完候補が少なくなるように grep "${cur}"
している。
わざわざダブルクオートで囲んでいるのはcurに何も入っていないときにエラーが出るのを防ぐためである。
これを応用すると結構好き勝手補完できるようになって便利かもしれない。