将 ls 或 tree 的输出管道传输到较少的颜色会丢失吗?

Tim*_*Tim 14 ls less

tree并且ls可以通过对文件名进行不同的着色来区分文件类型。

tree并且ls经常输出一长串文件(包括目录),所以我通过管道将标准输出输出到less.

less不保留颜色。我们怎样才能让它显示颜色,或者一些其他的方式?

刚刚看到链表,但管道到less -Rless -r不起作用。我的操作系统是 Ubuntu 12.04。less是 444 版:2011 年 6 月 9 日。

phe*_*mer 18

我将假设您正在使用ls --color=auto,它告诉ls在“自动”模式下使用颜色。“自动”模式告诉less查看 STDOUT 是否为终端,如果是,则使用颜色,否则不使用颜色。当您通过管道ls输入 时less,STDOUT 不是终端,它连接到 的 STDIN less,这是一个普通管道。

解决方案,使用ls --colorls --color=always

然而,现在这导致了另一个潜在的问题。根据您的less,它可能不显示颜色,而是显示转义码。解决方案是使用less -R. 这告诉less通过 ANSI 颜色转义的转义代码。您不想使用,-r因为这会导致环绕的长线出现问题,因为 less 无法正确计算线长。

所以完整的解决方案:

ls --color | less -R
Run Code Online (Sandbox Code Playgroud)

同样对于tree

tree -C | less -R
Run Code Online (Sandbox Code Playgroud)