tree
并ls
可以通过对文件名进行不同的着色来区分文件类型。
tree
并且ls
经常输出一长串文件(包括目录),因此我将 stdout 输出通过管道传输到less
.
但less
没有保留颜色。我们如何才能让它显示颜色,或者还有其他方法吗?
刚刚看到了链接列表,但是管道到less -R
orless -r
不起作用。我的操作系统是 Ubuntu 12.04。less
版本 444:2011 年 6 月 9 日。
答案1
我假设您正在使用ls --color=auto
,它告诉ls
您在“自动”模式下使用颜色。 “自动”模式告诉ls
查看 STDOUT 是否是终端,如果是,则使用颜色,否则不使用颜色。当您通过管道ls
进入时less
,STDOUT 不是终端,它连接到 的 STDIN less
,这是一个普通管道。
解决办法,使用ls --color
或ls --color=always
。
然而现在这导致了另一个潜在的问题。根据您的情况less
,它可能不会显示颜色,而是显示转义码。解决方案是使用less -R
.这告诉less
我们传递 ANSI 颜色转义的转义代码。您不想使用,-r
因为这会导致长行环绕的问题,因为 less 无法正确计算行长度。
如此完整的解决方案:
ls --color | less -R
同样对于tree
:
tree -C | less -R