Если grep o
производит вывод цвета, то либо grep
является псевдонимом для grep --color=auto
или grep --color=always
(или, возможно, больше параметров), либо GREP_OPTIONS
устанавливается значение, которое содержит --color=auto
или --color=always
. Так $GREP_OPTIONS
как пусто, это должен быть псевдоним.
Поскольку grep o | less -R
не показывает цвета, псевдоним должен быть grep --color=auto
(разумный выбор). При использовании псевдонима grep
команда всегда получает --color
параметр в командной строке, и он имеет приоритет над переменной среды.
Если вы хотите использовать переменную среды, удалите определение псевдонима из своего ~/.bashrc
или для одного сеанса unalias grep
. Вы можете заменить alias grep='grep --color=auto'
на export GREP_OPTIONS='--color=auto'
: они имеют практически одинаковое значение, за исключением того, что:
- установка
GREP_OPTIONS
другого значения только переопределяет последнее;
- псевдоним
grep
включается только при запуске из интерактивной оболочки, в то время как настройка GREP_OPTIONS
также применяется при grep
запуске из сценариев и других приложений.
Никогда не вставляйте --color=always
или большинство других параметров GREP_OPTIONS
: это сломало бы много программ, которые анализируют вывод grep
. --color=auto
о единственном безопасном варианте , чтобы положить в GREP_OPTIONS
. Для всего остального используйте псевдоним. По этой причине в будущих версиях GNU grep будет прекращена поддержка этой опции.
Обратите внимание, что определение псевдонима входит в ~/.bashrc
(это настройка оболочки), тогда как определение переменной среды входит в ~/.profile
(это настройка сеанса). См. Есть ли ".bashrc" эквивалентный файл, прочитанный всеми оболочками?
Если вы хотите выполнить команду unaliased только один раз, запустите \grep
вместо grep
(цитирование любой части имени обходит поиск псевдонимов).
grep v3.1
громко жалуетсяGREP_OPTIONS
на каждый призыв:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script