「peco」はあらゆるコマンドライン出力を選択可能にするフィルタリングツール。コマンドラインの革命児として今静かなブームとなっています。
pecoを使えば、例えば「ps aucx | peco」を実行すると、標準出力されたプロセス一覧がキーボードで選択可能になり、リターンキーを押すことで特定の行を選択することができるようになります。
この選択結果を他のコマンドラインツールにうまく渡すことでコマンドラインをより便利に利用しよう!というコンセプトのツールです。
「ps aucx | peco」だと実用性はありませんが、シェルと組合せてコマンド履歴やcdの履歴を選択可能にすれば便利に使うことができます。
最近お気に入りのツールなので紹介してみたいと思います。
インストール
pecoはgoで作られたツールなのでReleasesからMac/Windows/Linux用のバイナリをダウンロードして使うのが一番簡単です。
Macの場合peco_darwin_amd64.zipをダウンロードし、pecoを「/usr/local/bin」などパスが通ったフォルダに(Homebrewユーザーは別の場所が良いでしょう)コピーしてください。
準備ができたら「ls -l | peco」を実行。
矢印キーなどでカーソルを動かし、リターンキーで選択できることを確認してください。
設定
zshと組み合わせる場合、コマンド履歴とcd履歴をpecoと組み合わせるのがメジャーなようです。以下の設定はpecoを使い始めたを参考にさせて頂きました。
コマンド履歴を選択式に
「.zshrc」に以下の内容を追加します。
function peco-select-history() { local tac if which tac > /dev/null; then tac="tac" else tac="tail -r" fi BUFFER=$(history -n 1 | \ eval $tac | \ peco --query "$LBUFFER") CURSOR=$#BUFFER zle clear-screen } zle -N peco-select-history bindkey '^^' peco-select-history
「source .zshrc」すると「Ctrl-^」でコマンド履歴が選択可能になります。
コマンド履歴が一覧表示され再利用可能なりました!!文字を打ち込んでいくとインクリメンタルに結果が絞り込まれていきます。
cd履歴を選択式に
「.zshrc」に以下の内容を追加します。
function peco-cdr () { local selected_dir=$(cdr -l | awk '{ print $2 }' | peco) if [ -n "$selected_dir" ]; then BUFFER="cd ${selected_dir}" zle accept-line fi zle clear-screen } zle -N peco-cdr bindkey '^@' peco-cdr
「source .zshrc」すると「Ctrl-@」でコマンド履歴が選択可能になります。
cdした履歴が一覧表示されました!!いくつもの作業用ディレクトリを行ったり来たりして作業しているときかなり便利だと思います。
まとめ
pecoの基本的な利用方法を紹介しました。標準入出力を介して他のコマンドと連携するUNIX精神溢れるツールなのでアイデア次第で他にもいろいろな利用方法が考えられそうです。「peco 設定」などで検索するとよりディープな活用方法がたくさん見つかるので興味のある方は探してみてください。