私の別名は次のとおりです:
alias mca_color='nawk '"'"'BEGIN { arr["Creating shared object"] = "1;31";} \
{ l = $0; for (pattern in arr) \
{ gsub(".*" pattern ".*", "\033[" arr[pattern] "m&\033[0m", l); } print l; }'"'"
他の出力に色を付ける場合にも同様のエイリアスを使用します (より多くのパターンを使用しますが、これは単なる例です)。
したがって、このエイリアスは次のように使用すると機能します。
$ echo "-ne Creating shared object test.so ..." | mca_color
はecho
赤で印刷されています。しかし、私が試してみると:
$ make | mca_color
そしてさらに
$ make 2>&1 | mca_color
結果はない色付きです (そして、make
実行された場合、最後に同じテキストが「印刷」されます)。
何か案は?
子プロセスか何かに問題があるのではないかと考えましたが、明らかにパイプは機能します。 で試し、grep
出力をファイルにリダイレクトしてみましたが、すべて機能しました。
これでも機能しません (テキストは印刷されますが、色は付きません)。
$ make 2>&1 | grep 'a' | mca_color
答え1
ついに、ほとんど偶然にそれを理解しました。
どうやら、他にも次のようなalias make='colormake'
内容colormake
のスクリプトがあるようです。
/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl/usr/bin/make "$@" 2>&1 | /usr/share/colormake/colormake.pl
それは多くのことを説明しています。alias
forを削除するとcolormake
、「問題」は修正されました。