首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >grep -颜色默认为=auto还是总是=?

grep -颜色默认为=auto还是总是=?
EN

Unix & Linux用户
提问于 2018-11-06 16:43:30
回答 1查看 2.6K关注 0票数 6

如果指定no,grep --color的默认颜色行为是什么?

grep 手册页声明:

--color--colour用转义序列包围匹配(非空)字符串、匹配行、上下文行、文件名、行号、字节偏移量和分隔符(用于字段和上下文行组),以便在终端上显示它们的颜色。... 当is neveralwaysauto时。

grep --color的默认设置是否变为:

代码语言:javascript
复制
grep --color=auto

代码语言:javascript
复制
grep --color=always

还是取决于实现和平台?

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

代码语言:javascript
复制
echo "foo bar" | \grep --color foo

foobar的结果

代码语言:javascript
复制
echo "foo bar" | \grep --color foo | \grep --color bar

结果在foobar中,因此似乎grep --color=auto在这里有效。然而,我还没有在Windows或Mac上测试这一点;我不知道这种行为是否是通用的。

这个默认的for与ls --color略有不同,ls的手册页声明:

当默认为always或可以是neverauto时,将输出着色。

在这里,失踪时的行为是显式的。

EN

回答 1

Unix & Linux用户

回答已采纳

发布于 2018-11-06 16:54:47

它默认为auto

grep --color和编写--color=auto是一样的。

这似乎缺乏文档化,或者他们认为简单的--color不受欢迎,但是从测试和它的源代码都可以看出这一点:

代码语言:javascript
复制
  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;

注意,缺少optarg会导致与autotty相同的结果。

票数 17
EN
页面原文内容由Unix & Linux提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://unix.stackexchange.com/questions/480172

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档