プロジェクトの各ディレクトリにupload.sh
というシェルスクリプトが置いてあって、./upload.sh hostname
とやると、sshやscpでアップロードが行われるようになってます。
素のsshコマンドはbash-completionによって補完が行われれるようになっているけど、これと同じような補完をシェルスクリプトを実行するときにも行いたい。
bash-completion を自分で作る。独自補完を作ってみた。 - それマグで!を参考に、以下のような感じでできました。
.bash_profile
complete_uploadsh() {
local hosts=`grep "Host ${COMP_WORDS[COMP_CWORD]}" ~/.ssh/config | sed 's/^ *Host *\(..*\)/\1/'`
COMPREPLY=( $(compgen -W "${hosts}" ${COMP_WORDS[COMP_CWORD]} ) )
}
complete -F complete_uploadsh upload.sh