プログラムで各ストリームの出力をカラー化する方法はありますか?

プログラムで各ストリームの出力をカラー化する方法はありますか?

私はコマンドが端末に書き込むストリームに基づいてコマンド出力にbashの色を割り当てる方法を探しています。各ストリームに色を割り当てる方法はありますか?

例えば

stdout -> regular color
stderr -> red
program created streams that write to the terminal -> blue

答え1

あなたの要件とは異なりますが、誰かがstdout / stderrを色で区別したいと思っていたこの以前の質問を読む価値があります。

STDOUTとSTDERRのフォントカラーを設定する方法

答え2

持っている:

https://github.com/sickill/stderred

または、次のコマンドを使用してbashでこれを実行できます。

rederror() { (tput setaf 1; cat ; tput sgr0) >&2; }
#Example
someCommand() { echo normal; echo error >&2; }
someCommand 2> >( rederror )

私はbashから青に端末に入る非標準出力を設定できないと思います。 stderredに使用されている方法は可能です(しかし、stderrにのみ色を適用すると思います)。

関連情報