.bashrc
にはよく使うディレクトリにパッと移動できるように絶対パスでaliasを貼ってる。以下のような感じ
alias GR="cd /User/kimikimi714/Documents/git_repo"
これと同じような感じで以下のようにssh接続先へのaliasも前は貼ってた。
alias dev="ssh example.dev.com"
これはこれで便利だったんだが、例えばscpしたい時とかにはhost名の補完が効かないので結局host名をフルパスで入れなきゃいけなくて結構面倒くさかったりする。そこでsshのhost名を補完する方法ってあるんじゃないかなぁと思って探したらやっぱりあった。
macの場合、brew install bash-completion
でインストールした後、以下の行を.bash_profile
に追記する。
if [ -f `brew --prefix`/etc/bash_completion ]; then . `brew --prefix`/etc/bash_completion fi
これで~/.ssh/config
に書いたhost名たちが補完されるようになる。で、例として以下のようなファイルだとすると
Host example.dev.com HostName 192.168.33.20 User vagrant Port 2222 UserKnownHostsFile /dev/null StrictHostKeyChecking no PasswordAuthentication no IdentityFile /Users/kimikimi714/.vagrant.d/insecure_private_key IdentitiesOnly yes LogLevel FATAL
$ ssh example.dev.com
が補完されるようになる。scpとかでもhost名が補完されてめっちゃ便利。
ていうかaliasを貼るのはいけないことじゃないが、不用意にalias貼りまくるよりも既に道具として用意されてるものを上手に使っていきたいものだ。
2017-04-05 追記
sshやscpの補完はまぁbash_completion使うのでいいけど、ディレクトリ移動だったら今時aliasよりはpeco使うなーと思った。