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
结果是foo
bar
, 尽管
echo "foo bar" | \grep --color foo | \grep --color bar
结果是foo
bar
,所以看起来这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
结果与它等于auto
or 的结果相同tty
。