Featured image of post 標準出力の絞り込み検索ツール「peco」の使い方【grep代替】

標準出力の絞り込み検索ツール「peco」の使い方【grep代替】

標準出力をインクリメンタルに絞り込み検索できるGo製ツール「peco」の使い方。Homebrewでのインストール、ディレクトリの検索、コマンド履歴の検索を関数登録して呼び出す方法まで。grepより断然使いやすいです♪

1245文字

pecoを使ってみよう

ターミナル検索

皆さんはターミナルでテキスト検索や文字列検索を行う際はどのようにやっていますでしょうか?

grepfindなどの標準コマンドもありますが、いかんせん使いにくいですよね。。。

そんな問題を解決するのが今回ご紹介する「peco」です!

What’s peco?

pecoとは、標準出力のデータに対してクエリーベースで検索をかけることが出来るツールとなっています。
内部的にはGo言語で書かれています。

peco/peco

とりあえず、ものすごい使いやすいと言う評判しか聞かないのでインストールして使い勝手を試してみましょう!

インストール手順

Homebrewでインストール

pecoもHomebrewでのインストールが可能となっていますので、以下のコマンドでささっと導入。

コマンド
$ brew install peco

以下のログが表示されればインストール完了です。

実行ログ
==> Downloading https://homebrew.bintray.com/bottles/peco-0.5.3.el_capitan.bottle.tar.gz
######################################################################## 100.0%
==> Pouring peco-0.5.3.el_capitan.bottle.tar.gz
🍺  /usr/local/Cellar/peco/0.5.3: 6 files, 4.5MB

確認

以下のコマンドでインストールがされているか確認しましょう。

コマンド
peco --version

以下のようなログが出力されればインストールは完了です。

バージョン情報
peco version v0.5.3 (built with go1.10)

使い方

ディレクトリの検索

では、実際にpecoを使ってみましょう。

今回は以下のディレクトリが存在する階層で動作確認をしてみます。

treeコマンド
.
├── animals
├── books
├── foods
├── games
└── sports

以下のコマンドを入力してみてください。

コマンド
ll | peco

すると、以下のような画面になると思います。

対話形式になるので、絞り込みたい文字列を入力してみましょう。
するとどんどん絞られていきますね。





前述もした通り、pecoは標準出力の結果に対するこのような操作が全てです。

また、複数キーワード対応や部分一致での絞り込みが可能なのでめちゃくちゃ便利です♪

そして、pecoの真骨頂はコマンドの組み合わせにおける効率性の向上にあります!

コマンド履歴を簡単検索

historyコマンドの結果から簡単に検索をかけて実行出来るようにしてみましょう。

zshを使っている方は以下を.zshrcに追加してターミナルを再起動してみてください。

~/.zshrc
#関数定義
function pecoHistory() {
    BUFFER=`history -n 1 | tail -r  | awk '!a[$0]++' | peco`
    CURSOR=$#BUFFER
    zle reset-prompt
}

#関数をウィジェットに追加
zle -N pecoHistory

#ウィジェットをキーバインドに追加
bindkey '^R' pecoHistory

これで^(Ctrl)Rでヒストリー検索及び実行が可能になります。

ショートカットでサクッと簡単に履歴を検索して実行出来るようになるので、対話形式で過去のコマンドを探して実行する事が出来るためgrep検索よりダントツに使いやすいです!

grepの場合は一致するキーワードをタイポすると再度コマンド打たないといけなかったり、検索結果をコピペして実行する必要があるので。。。

終わりに

このようにpecoを使った複雑なコマンドも関数として登録しておけば簡単に呼び出せるようになります。

pecoはターミナル操作を革新的に使いやすくしてくれるツールだと筆者も感じました。

使い方によって可能性は無限大なので、皆さんも是非インストールしてみてください。