Я играл с настройками GREP_OPTIONS
и не мог заставить его работать. Просто любопытно, почему.
Вывод простых тестовых команд:
richard@ubuntu:~$ echo $GREP_OPTIONS
richard@ubuntu:~$
richard@ubuntu:~$ ls | grep o
Desktop
downloads
Dropbox
ebooks
workspace
richard@ubuntu:~$ ls | grep o --color=always | less -R
richard@ubuntu:~$ export GREP_OPTIONS="--color=always"
richard@ubuntu:~$ ls | grep o | less -R
- 1-й grep выводит на терминал в цвете (каждый 'o' красный)
- 2-й grep выводит меньше цвета (так же, как 1)
- Но третий grep выводит меньше, но в черно-белом режиме - но это должно быть в цвете.
Похоже, что grep игнорирует GREP_OPTIONS
. Это ошибка или я что-то не так делаю?
(Ubuntu 12.04.2, GNU grep 2.10)
grep v3.1
громко жалуетсяGREP_OPTIONS
на каждый призыв:grep: warning: GREP_OPTIONS is deprecated; please use an alias or script
alias grep='GREP_COLOR="1;33;40" LANG=C grep --color=auto'
для выделения желтым цветом.Ответы:
Если
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_OPTIONS
не рекомендуется в пользуalias
варианта.