有没有办法对程序中每个流的输出进行着色

有没有办法对程序中每个流的输出进行着色

我正在寻找一种方法,让 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 进行着色)。

相关内容