sshクライアント名の補完 for tcsh
SSH力をつけよう
に感化されて.ssh/configの設定をみなおした
Host host1 HostName 192.168.1.1 Host fumidai HostName 192.168.1.2 User user1 LocalForward 2200 home.example.net:10022 Host home HostName 127.0.0.1 Port 2200 ForwardX11 yes Host host2 HostName 192.168.10.1 ForwardX11 yes Host host3 HostName 192.168.20.1 ProxyCommand ssh host2 nc -w 10 %h %p # host2のsshのバージョンは3.9なのでncを使った* :
*参考 ncある限りぼくはどこまででもいけるッ! - (ひ)メモ
なんて具合に山のようにホスト名を記述したが
シェルで補完できないのが困る
現在tcshを使っているが
Fedoraだと/usr/share/doc/tcsh-***/complete.tcsh
にいろんな補完情報が載っている
# これだと.ssh/known_hostsから補完できる
その情報を元に.cshrcに
if ( -r "$HOME/.ssh/config" ) then set noglob set ssh_hosts=`cat "$HOME/.ssh/config" | grep '^Host ' | cut -f 2 -d \ ` >& /dev/null complete ssh p/1/\$ssh_hosts/ c/-/"(l n)"/ n/-l/u/ N/-l/c/ n/-/c/ p/2/c/ p/*/f/ unset noglob endif
を書いて補完できるようにした