Существует ли файл конфигурации 'rc' для grep / egrep? (~ / .Egreprc?)

37

Я обычно использую grep при разработке, и есть некоторые расширения, которые я всегда не хочу искать (например, * .pyc).

Можно ли создать ~ / .egreprc или что-то в этом роде и поставить некоторую фильтрацию, чтобы всегда не показывать pyc-файлы в результате.

Возможно ли это, или мне нужно будет создать псевдоним для использования grep таким образом и вызвать псевдоним вместо grep?

Кто-то все еще использует тебя MS-DOS
источник

Ответы:

66

Для grep нет rc-файла, но вы можете задать для переменной среды GREP_OPTIONSсписок параметров, разделенных пробелами, которые будут применяться ко всем командам grep. Для этого требуется GNU grep (реализация на не встроенных Linux, Cygwin и некоторых других системах) 2.4; эта --excludeопция является новой для GNU grep 2.5. Поместите что-то вроде этого в свой ~/.profile:

export GREP_OPTIONS='--color=auto --exclude=*.pyc --exclude-dir=.git'

Если вы сделали это, но хотите запустить grep один раз без этих параметров по умолчанию, вы можете переопределить их (например, grep --color=neverотключить цвета) или очистить GREP_OPTIONSпеременную, запустив GREP_OPTIONS= grep ….

Другая возможность - определить псевдонимы для grep. Я использую вариант следующего:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'
Жиль "ТАК - прекрати быть злым"
источник
1
Это тот ответ, который я искал. Я думаю, что я буду читать больше о ~ / .profile. @ Жиль, ты мужчина. Спасибо за помощь!
Кто-то все еще использует тебя MS-DOS
1
Учитывая, что есть два способа сделать это (GREP_OPTIONS и псевдоним grep): один из них предпочтителен? Почему или почему нет?
Кристоф Вурм
4
@Legate: Важное отличие заключается в том, что GREP_OPTIONSэто повлияет на grepвызовы в скриптах, а псевдоним - нет. Так что GREP_OPTIONSследует использовать с осторожностью. Наиболее распространенным является использование for --color=auto, которое в принципе безвредно в сценариях, поскольку оно действует только в том случае, если вывод является терминалом.
Жиль "ТАК - перестань быть злым"
GREP_OPTIONS устарела; пожалуйста, используйте псевдоним или сценарий
Стивен Пенни
3

Ack может делать то, что вы хотите и многое другое.

Он будет игнорировать двоичные файлы по умолчанию, и вы можете указать, чтобы он игнорировал другие типы файлов, как вам нужно --notext, --nohtmlи т. Д. Он также имеет возможность определять файл rc, чтобы вы могли настроить его под свои собственные типы.

Марк Маккинстри
источник
Я тоже использую ack, но мне это не понравилось. Это действительно быстро, но доступно не во всех установках, поэтому я подумал о grep. Благодарность!
Кто-то все еще использует тебя MS-DOS
2
ack - это отдельная Perl-программа, которую можно загрузить в виде простого текстового файла. Если вы хотите, вы можете перейти на betterthangrep.com/ack-standalone и вырезать и вставить содержимое в файл. Я специально сделал это так, чтобы он был доступен везде, где вы можете запустить Perl.
Энди Лестер
0

Не прямой ответ на ваш вопрос. Но у grep есть возможность игнорировать все двоичные файлы, включая * .pyc. Опция есть-I

grep -rI hello .
Тайлер Лонг
источник
0

Не в GNU grep/ egrep, нет.

Вы, вероятно, хотите, чтобы псевдоним или сценарий со специальным именем делали это в любом случае, потому что однажды позже вы можете оказаться очень смущенными, пытаясь найти что-то, что вы забыли, соответствует вашей специальной конфигурации.

mattdm
источник
3
GREP_OPTIONSв ~/.profileприближается.
Жиль "ТАК - перестань быть злым"
1
@ Жиль - хорошая мысль. На самом деле, я забыл, что у меня есть это для себя --color=auto!
Mattdm