4

Я возился с grep и вставил это в мой .zshenv:

export GREP_OPTIONS="--color=auto"
export GREP_COLORS='mt=1;34'

Я бился головой о клавиатуру и в течение минуты менял GREP_COLORS пытаясь понять, почему цвета папок работают, а соответствующий текст - нет.

Я делал это:

$ grep -R -n -i -e "functionFoo\(" --include=*.cs --exclude-dir=Logs *

Для номера строки и имени файла были заданы цвета по умолчанию, а соответствующий текст - нет.

Потратив слишком много времени, я подумал сделать это:

$ grep -R -n -e "functionFoo\(" --include=*.cs --exclude-dir=Logs *

(Я удалил опцию -i .) Вот и все, что нужно, чтобы соответствующий текст отображался жирным синим цветом. Это установка Cygwin на Vista с rxvt, запускающим zsh.

Любая идея, почему цвета grep не работают при указании нечувствительного к регистру соответствия?

Обновление: в cygwin 1.7 это немного лучше - поиск без учета регистра работает правильно, но он только выделяет слово, которое точно соответствует выражению. Другими словами, "FunctionFoo" выделяет "FunctionFoo", но не "functionFoo" и наоборот. Возможно, проблема с grep, поэтому я добавлю ее в этот список.

2 ответа2

1

Это связано не с Cygwin, а с grep. Вам необходимо установить переменные окружения в вашей оболочке, например, LANG.

Взято из руководства grep(1):

Языковой стандарт для категории LC_foo определяется путем изучения трех переменных среды LC_ALL, LC_foo, LANG в указанном порядке. Первая из этих установленных переменных указывает локаль. Например, если значение LC_ALL не задано, а значение LC_MESSAGES равно pt_BR, то для категории LC_MESSAGES используется бразильский португальский язык. Локаль C используется, если ни одна из этих переменных среды не установлена, если каталог локали не установлен, или если grep не был скомпилирован с поддержкой национальных языков (NLS).

Попробуйте например:

LANG=en_US.UTF-8 grep -R -n -i -e "functionFoo\(" --include=*.cs --exclude-dir=Logs *

Это должно исправить вашу проблему и работает для меня с GNU grep 2.5.4 и bash 3.2.48(1)-релизом.

0

У меня была такая же проблема при использовании Msys MinGW. Я не нашел способа решить эту проблему, поэтому в итоге использовал:

ack -i PATTERN

который делает цвета и нечувствительность к регистру правильно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .