AFAICT, ни man-страница для GNU grep
, ни info grep
достойная информация о том, что --color=auto
значит.
Я должен быть одним из немногих людей на планете, для которых смысл этого варианта не сразу очевиден.
Я предполагаю, что --color=auto
« где -то между» --color=never
и --color=always
, но это все еще оставляет слишком много неопределенным.
less -R
вы можете получить подсветку совпадений, но вам нужно указать--color=always
grep, чтобы он работал.Так
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)
источник