TL;DR

標準入力から受け取った行を対話的に絞り込み、選んだ行を標準出力に出すフィルタリングツールである。Python 製の percol をもとに Go で書き直されており、単一のバイナリで動く。

なぜ必要か

入出力が標準入力と標準出力なので、パイプで他のコマンドとつなげられる。コマンドの出力から目的の行を探して、次のコマンドに渡す操作を素早くできる。

仕組み

入力するたびに結果が絞り込まれる。空白で区切った複数の語は AND 検索になり、語の先頭に - を付けるとその語を含む行を除外できる。大文字と小文字の区別、正規表現、あいまい検索などのフィルタを切り替えられ、複数行の選択もできる。

例

ps -ef | peco
ls -l | peco
cd $(ghq list --full-path | peco --query peco)

最後の例では、--query で最初の検索語を指定し、選んだリポジトリへ移動している。

出典