filtに tail -Fなストリームだけでなくcat /path/to/access.log のような標準出力に対しても何度でもコマンドを試行錯誤できる機能を追加した

"トライアルアンドエラーパイプ"ことfiltに、tail -F /path/to/access.log なストリームだけでなく cat /path/to/access.log な標準出力に対しても何度でもコマンドをパイプで繋げて試行錯誤できる機能を追加しました。

k1low.hatenablog.com

今回新たに追加された機能もあわせて、使い方を紹介します。

使い方

filt v0.5.0の時点で使い方は2種類あります。

ストリームデータ(従来の使い方)

連続してデータが流れ続けてくるような標準出力には、パイプで filt を繋げます。

$ tail -F /path/to/access.log | filt

このときのユースケースとしては、

今リアルタイムに流れているデータに対して 何度でもコマンドを試行錯誤したい」

というものになると思います。

filtの標準入力にはそのまま途切れずにデータが流れてきます。

オプションなしのデフォルトの filt のとき、filtが提供するプロンプトでパイプで繋げるコマンドを入力すると、filtはそのコマンドに都度 その時流れてきたデータから 流します。つまり、コマンドを入力するまでのデータは保持せず捨てます。

これによりリアルタイム性を保持したまま、ストリームに対して「何度でもコマンドを繋げて試行錯誤する」ということを実現しています。

終端がわかっているデータ(新しい使い方)

保存済みのアクセスログの検索や整形など、データの終端がわかっているような標準出力には、--buffered オプションをつけてパイプで繋げます。

$ cat /path/to/access.log | filt --buffered

このときのユースケースとしては、

/path/to/access.logの先頭から終端までに対して 何度でもコマンドを試行錯誤したい」

というものになると思います。

filt --buffered のとき、filtはまずデータの終端までバッファに読み込みます。そして、filtが提供するプロンプトでパイプで繋げるコマンドを入力すると、filtはそのコマンドに、都度 バッファに保持したデータを最初から 流します。

これにより、標準入力で受け取ったデータに対して「何度でもコマンドを繋げて試行錯誤する」ということを実現しています。

v1.0.0に向けて

これで、ほとんどの標準出力に対してとりあえずパイプでfiltを繋げてコマンドを試行錯誤するということができるようになったと思います。

filtは私自身日常的に使っているツールです。しばらく使って使い勝手に問題がなければ、微調整後 v1.0.0 にして出そうと思っています。

「とりあえずパイプでfilt」

で開発体験がより良くなれば幸いです。