AFAICT,无论是 GNU 的手册页grep
还是info grep
,都没有打算说明什么--color=auto
意思。
我一定是这个星球上为数不多的人之一,这个选项的意义不是很明显。
我猜测,--color=auto
“是某处在中间”--color=never
和--color=always
,但仍有太多的不确定。
Eri*_*ouf 18
规则与 for 相同ls
,后者在man ls
. 引用:
默认情况下和
--color=never都禁用使用颜色区分文件类型。使用 --color=auto,ls 仅在
标准输出连接到终端时才发出颜色代码。LS_COLORS 环境
变量可以更改设置。使用 dircolors 命令进行设置。
因此,它将使命令仅在输出到终端时添加颜色格式,而不是,例如,当它转到使用管道的程序可能无法很好地处理颜色格式的管道时。
pid*_*idi 10
由于grep
是 GNU 程序,因此另一个选择可能是查看源代码。
内部grep的测试static int color_option
对于任何一个0
,1
或2
。
0
从不使用彩色输出1
总是使用颜色2
仅在打印到终端时使用颜色现在,当您--color=auto
将 grep 作为 CLI 上的参数移交给它时,它会在内部将变量设置color_option
为2
.
如果color_option
等于,2
grep
则进一步测试是否STDOUT
链接到终端或用户通过 禁用彩色输出shell environment variables
。如果前一个是真实的并且允许彩色输出,grep
则继续评估应该使用哪些颜色,最后最终打印出您CLI
的颜色。
来源:(grep 2.21)
grep.c line 306, 2374, 2440
colorize-posix.c line 36
man isatty
Run Code Online (Sandbox Code Playgroud)