私はシェルスクリプトなどの開始段階にあり、watchコマンドの-dオプションと同様に、コマンドの反復出力をカラー化する正しい方法を見つけることにいくつかの困難があります。
lsofや他のコマンドへの変更を見たいです。つまり、変更された/新しい行だけが赤で強調表示されることを望みます(白い背景で強調表示し、次の行をすべて強調表示する代わりに)。 diffや他のコマンドを使ってこれを行うエレガントな方法はありますか?
例:赤い線はSSHを介した新しい接続を示します。
(ここでGREPを使用してESTABLISHEDを見つけることができますが、私が見たいすべてのコマンドが検索するキーワードを提供するわけではありません。したがって、出力で新しい/変更された行を見つける必要があります。)
ベストアンサー1
ついに私はそれをする方法を見つけました。パフォーマンスとレイテンシのためにファイル操作(tmpfsなど)を避けたいです。秘密は、コマンドの出力が何であるか、dwdiff
または2つの引数で通知することです。wdiff
はいそして以前は同じ繰り返し内で。プロセスの置き換えは私のヘルパーです。
while true; do p1=$p2; p2=$(clear; iotop -ob -n1);
dwdiff -y "\010" -1 -c <(echo "$p1") <(echo "$p2"); sleep 1; done
-y "\010"
列を整列させるには、変更された単語の前のスペースを削除してください。$p1
手続き$p2
型置換を保存するために使用される範囲<(...)
。交換時に出力を直接提供することは私には適していません。ここでこのようなヒントを得ましたこれ郵便はがき。
たぶんもっと簡単な解決策があるかもしれませんが、結局私はとても複雑です。思いっきり投稿してください!