Czy istnieje plik konfiguracyjny „rc” dla grep / egrep? (~ / .egreprc?)


37

Zwykle robię trochę grepa podczas programowania i są pewne rozszerzenia, których nie zawsze chcę szukać (jak * .pyc).

Czy można utworzyć ~ / .egreprc lub coś w tym rodzaju i zastosować filtrowanie, aby zawsze nie wyświetlać plików pyc w rezultacie.

Czy to możliwe, czy też muszę utworzyć alias do używania grep w ten sposób i wywołać alias zamiast grep?

Odpowiedzi:


66

Nie ma pliku rc dla grep, ale można ustawić zmienną środowiskową GREP_OPTIONSna listę opcji oddzieloną spacjami, które będą miały zastosowanie do wszystkich poleceń grep. Wymaga to GNU grep (implementacja w niewbudowanym systemie Linux, Cygwin i niektórych innych systemach) 2.4; --excludeopcja jest nowy GNU grep 2.5. Umieść coś takiego w swoim ~/.profile:

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

Jeśli to zrobiłeś, ale chcesz raz uruchomić grep bez tych domyślnych opcji, możesz je zastąpić (np. grep --color=neverWymusić wyłączenie kolorów) lub opróżnić GREP_OPTIONSzmienną, uruchamiając GREP_OPTIONS= grep ….

Inną możliwością jest zdefiniowanie aliasów dla grep. Używam wariantu:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'

1
To jest odpowiedź, której szukałem. Myślę, że przeczytam więcej o ~ / .profile. @Gilles, jesteś mężczyzną. Dzięki za pomoc!
Ktoś nadal cię używa MS-DOS,

1
Biorąc pod uwagę, że istnieją dwie możliwości (GREP_OPTIONS i alias grep): Czy jedna z nich jest preferowana? Dlaczego lub dlaczego nie?
Christoph Wurm

4
@Legate: Ważną różnicą jest to, że GREP_OPTIONSwpłynie na grepwywołania w skryptach, podczas gdy alias nie. Dlatego GREP_OPTIONSnależy go stosować oszczędnie. Najczęstszym zastosowaniem jest do --color=auto, co w zasadzie jest nieszkodliwe w skryptach, ponieważ działa tylko wtedy, gdy wyjście jest terminalem.
Gilles „SO- przestań być zły”

GREP_OPTIONS jest przestarzałe; użyj pseudonimu lub skryptu
Steven Penny

3

ack może robić, co chcesz i więcej.

Będzie ignorować pliki binarne domyślnie i można powiedzieć to ignorować innych typów plików, jak chcesz --notext, --nohtmlitd Ma możliwość definiowania pliku rc zbyt czemu można dostosować go z własnych typów.


Ja też używam ack, ale mi się nie podobało. Jest rzeczywiście szybki, ale nie jest dostępny we wszystkich instalacjach, więc myślałem o grep. Dzięki!
Ktoś nadal cię używa MS-DOS,

2
ack to pojedynczy program Perla, który można pobrać jako zwykły plik tekstowy. Jeśli chcesz, możesz przejść do betterthangrep.com/ack-standalone i wyciąć i wkleić zawartość do pliku. Zrobiłem to specjalnie, aby był dostępny wszędzie tam , gdzie możesz uruchomić Perla.
Andy Lester,

0

Nie bezpośrednia odpowiedź na twoje pytanie. Ale grep ma opcję ignorowania wszystkich plików binarnych, w tym * .pyc. Opcja jest-I

grep -rI hello .

0

Nie w GNU grep/ egrep, nie ma.

Prawdopodobnie chcesz, aby i tak specjalnie nazwany alias lub skrypt działał w ten sposób, ponieważ pewnego dnia może się okazać, że jesteś bardzo zdezorientowany, gdy próbujesz znaleźć coś, o czym zapomniałeś, odpowiada twojej specjalnej konfiguracji.


3
GREP_OPTIONSw ~/.profilezbliża.
Gilles 'SO - przestań być zły'

1
@Gilles - dobry punkt. W rzeczywistości zapomniałem, że sam to mam --color=auto!
mattdm,
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.