watchコマンドによってカラーgrep出力が複数のフラグメントに分割される

watchコマンドによってカラーgrep出力が複数のフラグメントに分割される

watchファイルを実行して内容を変更したときにgrepコマンドの出力が表示されるように実行しようとしています。

一般的なアプローチはうまく機能しますが、色が不足しています。

watch grep 'something' **/*

...私は色が本当に欲しかったので、次のようにしました。

watch grep 'something' **/* --color=always

時計が色を操作するエスケープコードを解析できないため、まだ見苦しいです。それからこれを見つけました:

watch --color grep 'something' **/* --color=always

うーん…それはできません。出力は奇妙な方法で断片化/混合されます。何らかの理由で1行だけが表示され、watch --colorgrepは約20個を出力しません。

watchカラー出力はどのように使用できますかgrep


別々のケース:

以下を使用してください。

mkdir grep_test; cd grep_test
echo "asdsad\nasdasd\nsaasdasd" > file1 
echo "test\n123\ntest" > file2

2つのファイルを作成し、次のコマンドを実行します。

grep test * --color=always

期待どおりに動作して出力されます(色やその他の項目を含む)。

file2:test
file2:test

しかし、時計を使うとき:

watch --color 'grep test * --color=always'

何も出力しません。この--colorオプションがないと、ANSI エスケープが解釈されなくても正しい出力が表示されます。私はこれをzshを含むtmuxセッションのFedora 25で実行しています。

また、watch -v出力は次のようになります。

watch from procps-ng 3.3.10

ベストアンサー1

それは明らかですよりカラー出力に本当に効果的です。しかし、特にgrep次の点に従って、いくつかの回避策を講じる必要があります。grep --color ANSIコードESC [Kを追加します - 表示されたテキストが変更されます。)

watch --color "GREP_COLORS=ne grep --color=always .* *"

おすすめ記事