Так 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
less -R
вы можете получить подсветку совпадений, но вам нужно указать--color=always
grep, чтобы он работал.