我在这个问题上看到了无数的排列,但我认为没有一个是完全重复的。
我可以仅将 stderr (或最终 stderr 和 stdin)复制到文件,同时保留彩色的屏幕上的输出(如果文件也被着色,那就更好了)
答案1
答案2
管道或重定向不会删除任何颜色!
当您使用的初始命令注意到输出不是终端时,它会删除颜色!因此不能作为该问题的一般答案。
参见例如man ls
:
ls
仅当标准输出连接到终端时才发出颜色代码。
您可以使用 来更改行为--color=always
。
同样适用于grep
:
--color[=WHEN], --colour[=WHEN]
Surround the matched (non-empty) strings, matching lines, context lines, file names, line numbers, byte offsets, and separators (for fields
and groups of context lines) with escape sequences to display them in color on the terminal. The colors are defined by the environment
variable GREP_COLORS. The deprecated environment variable GREP_COLOR is still supported, but its setting does not have priority. WHEN is
never, always, or auto.
例如:
echo 123 | grep --color=always 2 | tee file
...将为2
终端和文件中的输出提供颜色。
在输出中包含颜色,但是不是在文件中,您可以检查以下问题的答案这个问题然后运行例如:
echo 123 | grep --color=always 2 | tee /dev/tty | ansi2txt > file