Intereting Posts
Создание фиктивного трафика по ссылке OpenVPN Debian Jessie GRUB2 на многопользовательском ноутбуке EFI не может запускать ядро-initramf для Gentoo Как остановить systemd-logind и не активироваться позже? скажите xfce, чтобы изменить размер всех окон, когда внешний монитор отключен sudo не работает на моем Centos 7.3 Какой скрипт perl будет использовать scp-каталог с пробелами? Возможно ли, чтобы sudo считывал пароль из gnome-keyring или аналогичного Как проверить, какой сетевой интерфейс активен и предоставляет интернет? Создание моей собственной функции cp в bash В каком порядке цикл bash FOR IN захватывает файлы в папке? Как изменить созданную метку времени неделю назад? Измените часть строки, если ключевое слово найдено с помощью sed? GDM не отображается, когда я загружаю свою систему FreeBSD Изменить (не удалять) «фортуны» в консоли Linux Mint Как подсчитать подпроцессы, достигшие определенного состояния

Является ли GREP_OPTIONS = –color = всегда игнорируется?

Я играл с настройкой 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. 1-й вывод grep на терминал по цвету (каждый «o» красный)
  2. Второй выход grep через меньший цвет (тот же, что и 1)
  3. Но третий выход grep меньше, но черно-белый – но это должно быть в цвете.

Таким образом, похоже, что grep игнорирует GREP_OPTIONS . Это ошибка, или я делаю что-то неправильно?

(Ubuntu 12.04.2, GNU grep 2.10)

Если grep o производит цветной вывод, то либо grep является псевдонимом grep --color=auto или grep --color=always (или, возможно, больше параметров), либо для параметра GREP_OPTIONS установлено значение, которое содержит --color=auto или --color=always . Поскольку $GREP_OPTIONS пуст, это должен быть псевдоним.

Поскольку grep o | less -R 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 (при цитировании любой части имени обходит поиск псевдонима).