grep --color
如果未指定[ =WHEN ] ,则默认颜色行为是什么?
grep手册页指出:
--color
[=什么时候],--colour
[=什么时候]用转义序列包围匹配的(非空)字符串、匹配行、上下文行、文件名、行号、字节偏移量和分隔符(用于字段和上下文行组),以在终端上以颜色显示它们。... WHEN是
never
,always
或auto
。
默认 [ =WHEN ] 是否grep --color
变为:
grep --color=auto
Run Code Online (Sandbox Code Playgroud)
或者
grep --color=always
Run Code Online (Sandbox Code Playgroud)
还是取决于实现和平台?
在我使用 GNU grep 2.16 对 Ubuntu 14.04 进行的测试中:
echo "foo bar" | \grep --color foo
Run Code Online (Sandbox Code Playgroud)
结果,而foo
bar
echo "foo bar" | \grep --color foo | \grep --color bar
Run Code Online (Sandbox Code Playgroud)
结果是foo
bar
,所以它似乎grep --color=auto
在这里生效。但是,我没有在 Windows 或 Mac 上测试过;我不知道这种行为是否普遍。
[ =WHEN ] 的默认值ls --color
与手册页的ls
状态略有不同:
--color
[=当]为输出着色。 WHEN默认为
always
or 可以是never
orauto
。
在这里,缺少WHEN的行为是明确的。
mos*_*svy 16
它默认为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;
Run Code Online (Sandbox Code Playgroud)
请注意,缺少 aoptarg
与等于auto
or的结果相同tty
。