🌊
fzfを用いてssh先を簡単指定
はじめに
先日、aws-cli のプロファイルを簡単に切り替えられるように fzf で自作関数を書いてシェルに登録しました。
同じようなことを ssh ホストの切り替えでやりたくなったのでやってみました。
fzf
fzf とは、cli 上でのあいまい検索および結果選択が可能になる、GO 製の CLI ツールです。
peco とよく比較されます。詳細は以下記事等参照
fzf のインストール
$ git clone --depth 1 https://github.com/junegunn/fzf.git ~/.fzf
$ ~/.fzf/install
mac の方はbrew install fzf
でも大丈夫です。詳細は本家レポジトリをご確認ください。
シェル設定ファイルに関数追加
~/.ssh/config を参照して、Host アドレス一覧を取得し、その中から ssh 接続先を fzf で選択する、という挙動の関数を作成します。
.bashrc や.zshrc に以下関数定義を追記します。
function sshsp() {
local host=$(grep -E "^Host " ~/.ssh/config | sed -e 's/Host[ ]*//g' | fzf)
if [ -n "$host" ]; then
ssh $host
fi
}
自作 fzf 関数を呼び出して SSH 接続先を指定
関数定義後に、シェル再起動(exec $SHELL -l)や設定ファイル再読み込み(source ~/.zshrc)を実施しシェルに反映させます。
あとは、シェルでsshsp
コマンドを打つだけでプロファイルを切り替えられるようになります。
Discussion