Ersetzen Sie den Befehl grep durch grep -n - colour?

17

Weil ich faul bin ... jedes Mal, wenn ich grep verwenden möchte, möchte ich, dass es grep -n-colour ist. Gibt es eine Möglichkeit, dies dauerhaft abzubilden?

Tree77
quelle
6
+1 für "Weil ich faul bin ...". Hast du jemals eine Karriere als Entwickler in Betracht gezogen? :)
Dr. Hannibal Lecter

Antworten:

31

Fügen Sie in Ihrer $ HOME / .bashrc-Datei Folgendes hinzu:

export GREP_OPTIONS="-n --color"

Dies funktioniert auch mit egrepund in Aliasen, die grep verwenden.

Update : GREP_OPTIONS ist seit grep 2.21 veraltet und wenn Sie diese Lösung verwenden, wird die folgende Warnung angezeigt:

grep: warning: GREP_OPTIONS is deprecated; please use an alias or script

Die beste Lösung ist es daher, Macos Rat in seiner Antwort zu befolgen . Oder wechseln Sie zu ag , das standardmäßig in Farbe ausgibt.

richq
quelle
Respekt.
Myusuf3
4
Respekt aber keine Gegenstimme, oder? ;-)
richq
1
Aliase können einfach nach einer Pipe verwendet werden. Sie rekursieren einfach nicht.
Maco
1
Hey, hey, ich habe mich geärgert. Ich mag das besser als Pseudonym.
Dmitriy Likhten
@marco: du hast recht (mit bash) - ich habe an csh gedacht, wo sie nicht können. Hoppla!
richq
29

Bearbeiten Sie ~ / .bash_aliases Fügen Sie eine Zeile hinzu, die besagt:

alias grep='grep -n --color'

~ / .bash_aliases wird automatisch von ~ / .bashrc eingeschlossen, falls vorhanden

maco
quelle
8
Oder fügen Sie die Zeile hinzu, .profilewenn Sie möchten, dass sie in allen Shells und nicht nur in Bash funktioniert.
LassePoulsen
1
Dies funktioniert nicht mit xargs zB:find /usr/share -name '*.txt' |xargs grep testing
rfabbri
2

Sie können die Datei .bashrc in Ihrem Ausgangsverzeichnis ändern und einen Alias ​​definieren, der alle Standardeinstellungen überschreibt:

alias grep = 'grep -n --color'

Nach der Änderung schließen und öffnen Sie das Terminal erneut, da die Datei nur lesbar ist, wenn Sie das Terminal öffnen.

Wenn Sie sich die Datei .bashrc ansehen, finden Sie weitere Standard-Aliase wie:

alias ll = 'ls -l'

alias la = 'ls -A'

alias l = 'ls -CF'

Paolo Sammicheli
quelle
1

Erstellen Sie ein Skript zusätzlich zu einem in den anderen Antworten genannten Alias. Ein Alias ​​an sich wird nicht immer funktionieren, und eine Skriptebene ist sowieso schnell genug für eine von Menschen lesbare Ausgabe.

Wählen Sie einen Kurznamen wie cgrep:

#!/bin/sh
grep --color -n "$@"

Fügen Sie es in Ihren Pfad ein, sagen Sie ~/bin(wenn Sie UPE lesen, steht es in Ihrem Pfad :). Dann wird so etwas funktionieren:

find /usr/share -name '*.txt' | xargs cgrep testing

Ich bin immer noch nicht so glücklich, ich wollte auch, dass grep immer einfärbt, wenn stdout an ein Terminal geht, ohne selektiv cgrep einzugeben.

rfabbri
quelle