【问题标题】:How do I keep colors when piping "jq" output to "less"?将“jq”输出传递到“less”时如何保持颜色?
【发布时间】:2020-10-29 17:08:27
【问题描述】:

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

这行得通:

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

这不起作用:

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

关于如何让“少”保持颜色的任何想法?

【问题讨论】:

  • 你试过jq -C吗?
  • 如果我看到默认的彩色输出,为什么会这样?
  • 因为,正如后面添加的答案指出的那样,jq 默认情况下不会将颜色输出添加到管道。

标签: linux unix pipe jq less-unix


【解决方案1】:

抑制颜色的是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... 代码,则需要该开关。

【讨论】:

  • 非常感谢,正是需要的。 jq -C "." /tmp/myfile.json | less -R
猜你喜欢
  • 2016-03-20
  • 2023-01-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-09-16
  • 2013-09-20
  • 2019-08-17
  • 1970-01-01
相关资源
最近更新 更多