保留通过"少"或"更多"传送的文本的颜色

Zac*_* Xu 20 linux

某些命令生成彩色文本以提高可读性.

我正在使用Linux.例如,当我使用rakhg diff 输出为彩色时,为了更好的可读性.

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

hg diff | less
Run Code Online (Sandbox Code Playgroud)

颜色丢失了.

我该如何保留颜色?

谢谢!

use*_*730 12

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

您可以尝试强制程序使用各自的标志(例如--color或其他)输出颜色,但如果它们会尊重您的请求,它最终会依赖于实现.

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

  • 对于“git status”,它是[`git -c color.status=always status | 少-REX`](/sf/answers/1281322381/) (2认同)

Aar*_*lla 9

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

既然你可能不想一直指定:

export LESS=-R # Put that in a startup script like .bashrc.local
hg diff | less
Run Code Online (Sandbox Code Playgroud)

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