Gibt es eine 'rc' Konfigurationsdatei für grep / egrep? (~ / .egreprc?)

37

Normalerweise mache ich beim Entwickeln ein Grep, und es gibt einige Erweiterungen, nach denen ich nicht immer suchen möchte (wie * .pyc).

Ist es möglich, ein ~ / .egreprc oder ähnliches zu erstellen und einige Filter zu verwenden, um immer keine pyc-Dateien im Ergebnis anzuzeigen?

Ist dies möglich oder muss ich einen Alias ​​für die Verwendung von grep auf diese Weise erstellen und den Alias ​​anstelle von grep aufrufen?

Jemand verwendet Sie immer noch MS-DOS
quelle

Antworten:

66

Es gibt keine rc-Datei für grep, aber Sie können die Umgebungsvariable GREP_OPTIONSauf eine durch Leerzeichen getrennte Liste von Optionen festlegen , die für alle grep-Befehle gelten. Dies erfordert GNU grep (die Implementierung auf nicht eingebettetem Linux, Cygwin und einigen anderen Systemen) 2.4; Die --excludeOption ist neu in GNU grep 2.5. Tragen Sie so etwas in Ihr ~/.profile:

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

Wenn Sie dies getan haben, aber grep einmal ohne diese Standardoptionen ausführen möchten, können Sie sie überschreiben (z. B. grep --color=neverum Farben auszuschalten) oder die GREP_OPTIONSVariable durch Ausführen leeren GREP_OPTIONS= grep ….

Eine andere Möglichkeit besteht darin, Aliase für grep zu definieren. Ich benutze eine Variante der folgenden:

alias regrep='grep -Er --exclude=*~ --exclude=*.pyc --exclude-dir=.bzr --exclude-dir=.git --exclude-dir=.svn'
Gilles 'SO - hör auf böse zu sein'
quelle
1
Das ist DIE Antwort, nach der ich gesucht habe. Ich denke, ich werde mehr über ~ / .profile lesen. @ Gilles, du bist der Mann. Danke fürs Helfen!
Jemand benutzt Sie immer noch MS-DOS
1
In Anbetracht dessen gibt es zwei Möglichkeiten, dies zu tun (GREP_OPTIONS und alias grep): Wird eine davon bevorzugt? Warum oder warum nicht?
Christoph Wurm
4
@Legate: Ein wichtiger Unterschied besteht darin, dass Aufrufe in Skripten GREP_OPTIONSbetroffen sind grep, ein Alias ​​jedoch nicht. Also GREP_OPTIONSsollte sparsam verwendet werden. Die häufigste Verwendung ist für --color=auto, was in Skripten im Prinzip harmlos ist, da es nur wirksam wird, wenn die Ausgabe ein Terminal ist.
Gilles 'SO- hör auf böse zu sein'
GREP_OPTIONS ist veraltet. Bitte benutze einen Alias ​​oder ein Skript
Steven Penny
3

ack kann machen was du willst und mehr.

Es wird binäre Dateien standardmäßig ignorieren und Sie können ihm andere Dateitypen zu ignorieren sagen , wie Sie wollen --notext, --nohtmlusw. Es hat die Fähigkeit, eine RC - Datei zu definieren , so dass Sie es mit Ihrem eigenen Typ anpassen können.

Mark McKinstry
quelle
Ich benutze auch ack, aber es hat mir nicht gefallen. Es ist zwar schnell, aber nicht in allen Installationen verfügbar, also habe ich über grep nachgedacht. Vielen Dank!
Jemand verwendet Sie immer noch MS-DOS
2
ack ist ein einzelnes Perl-Programm, das als reine Textdatei heruntergeladen werden kann. Wenn Sie möchten, können Sie unter betterthangrep.com/ack-standalone den Inhalt ausschneiden und in eine Datei einfügen. Ich habe es speziell so gestaltet, dass es überall verfügbar ist, wo Perl ausgeführt werden kann.
Andy Lester
0

Keine direkte Antwort auf Ihre Frage. Aber grep hat die Option, alle Binärdateien einschließlich * .pyc zu ignorieren. Die Option ist-I

grep -rI hello .
Tyler Long
quelle
0

Nicht in GNU grep/ egrepgibt es nicht.

Möglicherweise möchten Sie dies ohnehin mit einem speziell benannten Alias ​​oder Skript tun, da Sie eines Tages möglicherweise sehr verwirrt sind, wenn Sie versuchen, etwas zu suchen, von dem Sie vergessen haben, dass es zu Ihrer speziellen Konfiguration passt.

mattdm
quelle
3
GREP_OPTIONSin ~/.profilenahe kommt.
Gilles 'SO- hör auf böse zu sein'
1
@ Gilles - guter Punkt. Tatsächlich habe ich vergessen, dass ich mich darauf eingestellt habe --color=auto!
Mattdm