1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

fzf でターミナルのコマンド入力を便利にする

Last updated at Posted at 2023-04-08

この記事は何?

最近 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について以下の記事を参考にさせていただきました。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?