grep --color 默认为 =auto 还是 =always?

grep --color 默认为 =auto 还是 =always?

grep --color如果没有 [,默认颜色行为是什么=何时] 已指定?

grep手册页状态:

--color[=什么时候], --colour[=什么时候]

    使用转义序列将匹配的(非空)字符串、匹配行、上下文行、文件名、行号、字节偏移量和分隔符(对于字段和上下文行组)包围起来,以便在终端上以彩色显示它们。 ...  什么时候never,always, 或者auto

是否默认[=何时]grep --color成为:

grep --color=auto

或者

grep --color=always

还是取决于实施和平台?

在我使用 GNU grep 2.16 在 Ubuntu 14.04 上进行的测试中:

echo "foo bar" | \grep --color foo

结果是foobar, 尽管

echo "foo bar" | \grep --color foo | \grep --color bar

结果是foobar,所以看起来这grep --color=auto在这里有效。不过,我还没有在 Windows 或 Mac 上测试过这一点;我不知道这种行为是否具有普遍性。

此默认设置为 [=何时ls --color] 与手册页中的状态略有不同ls

--color[=什么时候]

    对输出进行着色。  什么时候默认为always或者可以是never或者auto

这里,失踪者的行为什么时候是明确的。

答案1

它默认为auto.

grep --color和写作是一样的--color=auto

这似乎没有充分记录,或者他们认为简单的--color已弃用,但这可以从测试和从它的源代码:

  case COLOR_OPTION:
    if (optarg)
      {
        if (!strcasecmp (optarg, "always") || !strcasecmp (optarg, "yes")
            || !strcasecmp (optarg, "force"))
          color_option = 1;
        else if (!strcasecmp (optarg, "never") || !strcasecmp (optarg, "no")
                 || !strcasecmp (optarg, "none"))
          color_option = 0;
        else if (!strcasecmp (optarg, "auto") || !strcasecmp (optarg, "tty")
                 || !strcasecmp (optarg, "if-tty"))
          color_option = 2;
        else
          show_help = 1;
      }
    else
      color_option = 2;
    break;

请注意,缺少 an 的optarg结果与它等于autoor 的结果相同tty

相关内容