UNIX的なアレ

UNIX的なこととかいろいろ

sshでリモートホスト名を補完できる、bash_completion

Linux/Unix等を利用していて、コマンドやファイル名、ディレクトリ名はTABキーで補完をかけることはよくあると思います。
今回は、bashの補完機能を強化する、bash_completionを紹介したいと思います。

bash_completionをインストールする

Debian系のディストリビューションであれば標準でインストールされているとおもいます。/etc/の下に入っていますので、確認してみましょう。

$ ls -l /etc/bash_completion
 -rw-r--r-- 1 root root 215907 2006-12-12 06:20 /etc/bash_completion

もしインストールされていない場合は、下記のサイトからダウンロードしてください。
bash programmable completion – Freecode
/etc/の下に置くような手順にします。

$ wget http://freshmeat.net/redir/bashcompletion/20101/url_tgz/bash-completion-20060301.tar.gz
$ tar xvfz bash-completion-20060301.tar.gz
$ sudo cp -i ./bash_completion/bash_completion /etc/

.bashrcへの設定の追加

さて、インストールが完了したらbash_completionを使うように、.bashrcに設定を追加しましょう。

$ vi ~/.bashrc
  [下記の設定を追記する]
    if [ -f /etc/bash_completion ]; then
        . /etc/bash_completion
    fi
$ source .bashrc
  -> エラーが出ないことを確認する

これでbash_completionの設定は完了です!

ssh_configの設定を変更する

sshでいままでログインしたことのあるホスト名を補完できるのですが、その際、~/.ssh/known_hostsを参照しています。
ただし、/etc/ssh/ssh_configでhash化されるように指定されている場合は有効にならないので、設定を変更します。

$ vi /etc/ssh/ssh_config
  [変更前]
  HashKnownHosts yes

  [変更後]
  HashKnownHosts no

これで今後sshでログインしたホスト名はすべて補完をすることができます。

bash_completionを試す

それでは早速ためしてみましょう。

$ ssh (ここでTABキーを押す)
192.168.11.10 192.168.11.11 debian centos

すると、上記のように候補となるようなホスト名の候補リストが表示されます。あとはだんだんと指定していけば使用できます。
またコマンドの引数も補完をすることができます。

$ svn (ここでTABキーを押す)
?         blame     cleanup   cp        diff      import    log       move      pe        pl        propedit  ps        rename    st        switch
add       cat       co        del       export    info      ls        mv        pedit     plist     propget   pset      resolved  stat      unlock
ann       checkout  commit    delete    h         list      merge     pd        pg        praise    proplist  remove    revert    status    up
annotate  ci        copy      di        help      lock      mkdir     pdel      pget      propdel   propset   ren       rm        sw        update

ここでは試しにsvnコマンドを使用しています。(ちょっとコマンド数が多いですね・・・)
このように、様々な補完をすることができるようになります。

補完をきかせてキータイプ量を下げましょう

どうしてもUnixを使っているときはキーをたくさん打ってしまいがちですが、補完をさせることで無駄なキータイピングを減らし、そしてさらにはミスも減らしてくれるでしょう。
補完をもっと効かせて快適なUnixライフを。