1

Я часто буду делать что-то вроде grep -R foo . в корне проекта. Это полезно, но результаты разбавляются включением двоичного кода. temp, и тестовые файлы, которые меня не волнуют. В итоге я прикрепляю 2>&1 | grep -vE “Binary|/tmp/|/test/“ , который отфильтровывает то, что мне безразлично. Проблема в том, что каждый раз набирать боль. Все, включая и после 2> & 1, остается неизменным от запроса к запросу. Поэтому я хочу поместить его в псевдоним, который позволил бы мне grep -R foo . <thingie> , где thingie - что-то довольно короткое. Я пробовал псевдонимы и переменные окружения, но псевдонимы работают, только если они являются первым словом в строке, и переменные окружения, которые я могу расширить с помощью ${thingie} но в процессе, похоже, облажаются трубы. Любые идеи о том, как сделать эту работу?

1 ответ1

2

Да, функция - это путь. Если у вас есть GNU grep

  1. используйте опцию --exclude-dir чтобы рекурсивный поиск даже не беспокоился об этом.
  2. используйте параметр --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'

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