Чи є файл конфігурації 'rc' для grep / egrep? (~ / .egreprc?)


37

Я зазвичай роблю деякі грепи під час розробки, і є деякі розширення, які я завжди не хочу шукати (наприклад, * .pyc).

Чи можна створити ~ / .egreprc чи щось подібне і поставити деяку фільтрацію, щоб завжди не відображати файли pyc у результаті.

Чи можливо це, чи мені доведеться створити псевдонім для використання grep таким чином і назвати псевдонім замість grep?

Відповіді:


66

Немає rc-файлу для grep, але ви можете встановити змінну оточуючого середовища 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. @Gilles, ти людина. Дякуємо за допомогу!
Хтось досі використовує вас MS-DOS

1
Зважаючи на те, що для цього є два можливості (GREP_OPTIONS і псевдонім grep): чи є один із них кращим? Чому або чому ні?
Крістоф Вурм

4
@Legate: Важлива відмінність полягає в тому GREP_OPTIONS, що впливатиме на grepдзвінки в сценаріях, тоді як псевдонім не буде. Тому GREP_OPTIONSслід користуватися економно. Найбільш поширене використання для --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, немає.

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


3
GREP_OPTIONSв ~/.profileблизький.
Жил 'ТАК - перестань бути злим'

1
@Gilles - хороший момент. Насправді я забув, що я це ставив перед собою --color=auto!
mattdm
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.