2017-01-25 10 views
1

保存するたびにユニットテストフレームワークでファイルを実行するにはfswatchを使います。grep with greating with fswatch

テストとして、私はfswatchを実行し、私が期待される出力私のテキストエディタで/my/path/test.txtおよび取得するためにマイナーな変更を行います。

$ fswatch . | xargs -I {} echo {} {} 
/my/path/test.txt /my/path/test.txt 

をしかし、私はgrepの中に挿入した場合途中、私は何も出力を得るていないプロセスを繰り返す:私は間違って何をやっている

$ fswatch . | grep test | xargs -I {} echo {} {} 

編集

fswatch + grepの男のgrep

$ fswatch . | grep test 
/my/path/test.txt 
+0

'-0'は' NULL'の制限を解除するためのもので、[official-page](https://github.com/emcrisostomo/fswatch)は 'fswatch -o path'を使用していますか?結果は同じですか? – Inian

+0

'fswatch -o。 | xargs -I {} echo {} {} '私は保存するたびに' 1 1'を出力します。 –

答えて

1

すでに述べたように、--line-bufferedはブロックバッファ出力を指示します。したがって、すべての行をすぐに標準出力に書き出します。ブロックバッファリングはgrepがパイプに書き込みを行っているときのデフォルトの動作で、端末に書き込むときにはラインバッファリングがデフォルトです。

Now:fswatchの説明のように、ファイル名はです。に改行文字が含まれています。したがって、-0の存在(findなどの他のファイル処理ユーティリティとして)が存在します。 grepにラインバッファーと言ったら、が破損してfswatchというレコードになります。

代わりにフィルタを使用してフィルタリングしていませんか?簡単なフィルタリングのために、使いやすいです。そうすれば、fswatchはこれらの特殊性やコーナーケースを気にすることなく、ファイル名を内部的に一致させることができます。

2

自体が正常に動作します:その後、linebuffered

--line-buffered 
      Use line buffering on output. This can cause a performance 
      penalty. 

最後のパイプコマンドとしてはgrepを使用してdeaultです。

+0

良いアイデア。私は本当に確実に言うことはできませんが、ネイティブの 'fswatch'オプション(' --include'、 '--exclude')よりも優れているようです。+1 –

+1

私が説明したように、それは"良い " fswatchによって出力されるすべてのファイル名に含まれる文字について確信がない限りこの種の制御をしていないと仮定すると、バッファを軽く並べるべきではありません。さもなければ、フィルターと 'fswatch'オプション' -0'で処理されるすべての問題に非常によくぶつかるかもしれません。 –