Я часто буду делать что-то вроде grep -R foo .
в корне проекта. Это полезно, но результаты разбавляются включением двоичного кода. temp, и тестовые файлы, которые меня не волнуют. В итоге я прикрепляю 2>&1 | grep -vE “Binary|/tmp/|/test/“
, который отфильтровывает то, что мне безразлично. Проблема в том, что каждый раз набирать боль. Все, включая и после 2> & 1, остается неизменным от запроса к запросу. Поэтому я хочу поместить его в псевдоним, который позволил бы мне grep -R foo . <thingie>
, где thingie - что-то довольно короткое. Я пробовал псевдонимы и переменные окружения, но псевдонимы работают, только если они являются первым словом в строке, и переменные окружения, которые я могу расширить с помощью ${thingie}
но в процессе, похоже, облажаются трубы. Любые идеи о том, как сделать эту работу?
1
1 ответ
2
Да, функция - это путь. Если у вас есть GNU grep
- используйте опцию
--exclude-dir
чтобы рекурсивный поиск даже не беспокоился об этом. - используйте параметр
--binary-files=without-match
чтобы игнорировать двоичные файлы (псевдоним-I
).
Так:
mygrep() {
grep -R --exclude-dir=tmp --exclude-dir=test -I "$@" .
}
Тогда позвони
mygrep Foo
mygrep -i foo
mygrep -E '(foo|bar)baz'