Если я использую две последовательные grep
команды, например:
echo "foo bar" | grep foo | grep bar
Тогда первый шаблон ("foo") не подсвечивается. На самом деле, похоже, что grep удаляет коды цветов из своего ввода. Есть ли способ предотвратить это?
Ответы:
Использование
--color=always
.grep
определяет, является ли вывод в канал (или файл). Вы больше никогда не хотите, чтобы цвета выводились в файл - так как это экранирующие последовательности для терминала. Как правило:например:
Переопределить использование
--color=always
.Пример:
Имея файл:
потом
будет цвет
ID
,2013
иfoo
.будет цвет
ID
иfoo
, но нет2013
.1 Важно: Вы также должны помнить, что добавленный беспорядок из цветов передается следующей команде в цепочке. Как только ID раскрашен, вы не можете (легко), например, сопоставить
ID=111
.В некоторых случаях можно было бы хотеть терминальные цвета в файле . Попробуйте например
Хотя полученный файл будет очень ограничен в переносимости.
Сама раскраска также является продолжением.
Как упоминалось в добром @slm , вы можете добавить:
на ваш и
.bashrc
т. д., но не, если вы по какой-то причине действительно не понимаете последствий и по-прежнему хотите это сделать. Это во многом сломалось быgrep
из-за факта, упомянутого выше 1 .Добавьте,
alias
если вы используете его часто.GREP_OPTIONS
и--color
принять три варианта :never
,auto
иalways
. Два первых должны быть единственными для рассмотренияGREP_OPTIONS
.Вы также можете проверить
GREP_COLORS
наman
страницах или в GNU grep .источник
export GREP_OPTIONS="--color=always"
в .bashrc делает опции значениями по умолчанию для любых greps, и вы в значительной степени прибили это!ls
и гну Coreutils.