有些程序有彩色输出(例如grep
或emerge
在我的 gentoo 系统上),但如果它们的输出通过管道传输到less
例如或文件中,则彩色输出将被禁用。
但是,我知道less
能够显示彩色输出,例如
ccze -A < /var/log/emerge.log | less
显示彩色文本。所以我有两个问题:
是否可以“欺骗”其他彩色输出程序以保留颜色?
如果我这样做,我想保留颜色,例如:emerge -puND world | less
这些程序如何检测它们的输出被重定向?
答案1
大多数打印出这些颜色代码的命令都会明确检查 stdout/stderr 是否是 tty(使用 isatty 命令)。
捕获彩色输出的一种方法是使用
script
命令。运行script
将启动一个 bash 会话,其中所有原始输出都将捕获到一个文件中(默认名为 typescript)。
请参阅man script
以了解更多信息。