如何获得彩色的管道输出?

如何获得彩色的管道输出?

我使用的是带有 csh shell 的 FreeBSD。例如,在终端/屏幕上,我获得了 ls 的彩色输出(例如 ls -lGs)。但是当我通过 more 管道传输它(例如 ls -lGs | more)时,输出没有颜色。有没有办法让 more 也显示颜色?

答案1

我分两步解决了这个问题。

首先,我在 .cshrc 中设置环境变量 CLICOLOR_FORCE 来强制除 TERM 之外的输出也使用颜色,例如:

CLICOLOR_FORCE 1

more 有一个命令行选项 -R 来输出颜色序列。

   -R or --RAW-CONTROL-CHARS
          Like  -r,  but  only ANSI "color" escape sequences are output in
          "raw" form.  Unlike -r, the screen appearance is maintained cor-
          rectly  in  most  cases.   ANSI  "color"  escape  sequences  are
          sequences of the form:

这两者结合起来给了我想要的结果,所以

ls -lGs | more -R 

现在以彩色显示输出。

相关内容