当管道 "jq" 输出到 "less" 时如何保持颜色?

How do I keep colors when piping "jq" output to "less"?

我有一个简单的 json 文件,如果我将“jq”的输出通过管道传输到“less”,颜色将被删除。

这个有效:

# yey, lots of colors
jq "." /tmp/myfile.json

这不起作用:

# ugly output :( , no colors
jq "." /tmp/myfile.json | less -R

关于如何让“少”保持颜色有什么想法吗?

jq在抑制颜色。来自 man 页面

       o   --color-output / -C and --monochrome-output / -M:

           By default, jq outputs colored JSON if writing to a terminal.
You can force it to produce color even if writing to a pipe or a file
using -C, and disable color with -M

所以,只需使用:

jq -C "." /tmp/myfile.json | less -R

无论如何它都会输出颜色。 less 命令在我的版本上不需要 -R 开关,但我相信它在旧版本上需要。如果您看到 ESC... 代码,您将需要那个开关。