この記事は何?
最近 fzf という便利なコマンドラインツールを知ったので、簡単に紹介してみます。
fzfとは?
fzf は高速で拡張性のあるコマンドラインインタラクティブフィルタリングツールです。
https://github.com/junegunn/fzf
インストール
ubuntuの場合aptで一発です。
sudo apt install fzf
具体的にどんなことができる?
以下に使用例の一部を紹介します。
ファイルやディレクトリの検索
例えば以下のようにfindコマンドと組み合わせて、特定のディレクトリ以下のファイルをfzfでフィルタリングしながら選択することができます。
find /path/to/directory -type f | fzf
動いているところのイメージは公式レポジトリのyoutube動画が分かりやすいです。
https://youtu.be/qgG5Jhi_Els?t=69
コマンド履歴の検索
コマンド履歴をフィルタリングして検索することができます。例えば、以下のようにhistoryコマンドと組み合わせて、コマンド履歴をfzfでフィルタリングしながら選択することができます。
history | fzf
プレビューモードの利用
例えばlsコマンドと組み合わせて、選択したファイルの内容をプレビューすることができます。
ls | fzf --preview "cat {}"
使用例
過去に実行したコマンドを選択して実行
上記のhistory 検索を少しだけ拡張した例です。過去の実行履歴からコマンドを選択して、実行します。
history | awk '{$1=""; print $0}' | fzf
docker-composeファイルを選択してコマンドを実行
開発環境で複数のdocker-composeファイルを使い分けているような場合に、ファイルを選択してコマンドを実行できます。以下はdocker-compose up を実行する例です。preview オプションを使用して、compseファイルの中身を確認しつつファイルを選択できます。
find docker-compose*.yml -type f | fzf --preview "head -100 {}"| xargs -I @ docker-compose -f @ up -d
以下の様に.bashrcに関数として定義しておけば、更に簡単に使えます。
- .bashrc
# functions
hf(){
history | awk '{$1=""; print $0}' | fzf
}
# dkc (docker-compose) up down
dkc(){
case $1 in
"up") find docker-compose*.yml -type f | fzf --preview "head -100 {}"| xargs -I @ docker-compose -f @ up -d ;;
"down") find docker-compose*.yml -type f | fzf --preview "head -100 {}" | xargs -I @ docker-compose -f @ down ;;
*) echo "plese give the params up, down" ;;
esac
}
# history選択して実行
hf
# カレントディレクトリの docker-compose*.ymlファイルを選択してupする
dkc up
まとめ
以上、簡単なfzfの紹介と使用例でした。
アイデア次第でいろいろな便利な使い方ができそうですね。
fzfには他にもキーバインディングのカスタマイズなど色々な便利機能があるようです。気になった方はぜひ公式レポジトリをチェックしてみてください。
参考
aliasについて以下の記事を参考にさせていただきました。