45

为了便于阅读,某些命令会生成彩色文本。

我正在使用 Linux。例如,当我使用rakhg diff 输出为彩色以提高可读性时。

但是,当我通过管道输出less

hg diff | less

颜色消失了。

如何保持颜色?

谢谢!

4

2 回答 2

41

我相信一些命令足够聪明,如果它们检测到它们正在写入管道或文件而不是控制台,则不会输出颜色,因为这可能会破坏管道中下一个程序对其输出的解析。

您可以尝试强制程序使用它们各自的标志(例如--color或其他)输出颜色,但最终取决于它们是否会满足您的请求。

less例如,GNU grep 2.27即使传递给它也不会输出颜色--color。但是,如果您将--color=always其传递并通过管道输入less,您将能够通过less. 然后,使用-R标志将less解释颜色转义码。

于 2015-03-23T16:59:04.460 回答
20

尝试less -r或(更安全)less -R请参阅手册

由于您可能不想一直指定:

export LESS=-R # Put that in a startup script like .bashrc.local
hg diff | less

对于 Mercurial,您还可以使用寻呼机扩展

于 2012-11-08T17:09:39.267 回答