Ich habe unter Linux gesehen, dass grep
so konfiguriert ist , dass die Übereinstimmung hervorgehoben und die übereinstimmende Datei gedruckt wird.
Wie kann ich grep
die Hervorhebung von Übereinstimmungen konfigurieren ?
alias cgrep='grep -nR --color'
Verwendung:
$ cgrep somestring /path/to/dir/or/file/with*/possible/*wild.card
Auch einer meiner Favoriten:
$ pgrep some-hanging-process
listet alle Pids von Prozessen auf, die mit dem Namen eines hängenden Prozesses übereinstimmen, den Sie in der folgenden Situation verwenden können:
$ kill $(pgrep some-hanging-process)
grep
,grep -r
sollte in der Regel bevorzugt über seingrep -R
wie die ehemaligen Symlinks nicht durchqueren.Ich habe festgestellt, dass der beste Weg, grep zu pimpen , die Verwendung von ack ist , das im Wesentlichen rekursives grep mit einer intelligenten Ignorierliste (z. B. durchsucht keine .svn-Verzeichnisse, ignoriert Sicherungsdateien usw.), farbliche Hervorhebung von Ergebnissen und Perl reguliert. Es ist das, was grep in 98,6% der Fälle tun soll.
quelle
Ich habe dies in meinem .bashrc festgelegt, anstatt grep mit einem Alias neu zu definieren:
Für mich funktioniert das unter Linux, MacOSX & FreeBSD.
quelle
GREP_OPTIONS
sollte als schädlich angesehen werden. Ich empfehlealias
stattdessen zu verwenden . Siehe hier: bugs.launchpad.net/ubuntu/+bug/67141Ich würde empfehlen, die Umgebungsvariable GREP_OPTIONS zu vermeiden. Sie wirkt sich auf jeden Aufruf von grep aus, auch auf diejenigen, die in anderen Tools eingebettet sind. Wenn diese Tools erwarten, dass sich grep auf eine Weise verhält, und Sie dieses Verhalten ändern, werden diese Tools beschädigt.
Stattdessen können Sie einen Alias erstellen, der gut funktioniert. Dies wirkt sich nur auf Grep-Aufrufe aus Ihrer interaktiven Shell aus (dh, die Sie selbst eingeben).
Die letzte Option, die mir am besten gefällt, ist die Erstellung eines Wrapper-Skripts, das grep aufruft. Ich bevorzuge dies einem Alias, da ich diesen Wrapper von anderen Programmen aus aufrufen kann. ZB in vim, indem Sie vimgrep so einstellen, dass sich meine Suchvorgänge in vim genauso verhalten wie die Suchvorgänge in der Befehlszeile.
Rufen Sie dies auf mit:
z.B
sucht in allen Textdateien im aktuellen Verzeichnis und in den Unterverzeichnissen nach Instanzen von 'pattern'.
Beachten Sie, dass ich mein Skript "grp" nenne, anstatt "grep" zu schattieren, damit ich immer weiß, ob ich grep mit meinen benutzerdefinierten Standardeinstellungen aufrufe oder nicht.
Standardmäßig schließe ich ein:
Ich denke, jeder würde Quellcodeverwaltungsverzeichnisse überspringen wollen: .hg .git .bzr .svn
Das Überspringen von 'build' und 'dist' sind Python-Ismen und treffen wahrscheinlich auf die meisten Menschen nicht zu. Zweifellos werden Sie während Ihrer Arbeit Ihre eigenen Besonderheiten entwickeln.
'tags' ist die Ausgabe von ctags, die ich für 'Gehe zur Funktionsdefinition' und dergleichen in Tools wie vim verwende. Als solches enthält es mindestens eine Kopie jedes Wortes und Symbols aus meinem Quellcode. Es lohnt sich also, aus Ihren Suchergebnissen auszuscheiden.
"$ *" am Ende ist die Bash-Syntax für "und alle anderen Parameter von der Befehlszeile", sodass Sie Muster und Verzeichnis übergeben können, um wie gewohnt zu suchen und alle anderen Befehlszeilenflags zu überschreiben, die Sie möchten .
quelle
Die
--color
Option wurde bereits mehrmals erwähnt, aber ich möchte hinzufügen, dass es möglich ist, die Farbe, in der die Übereinstimmungen hervorgehoben werden, mithilfe einer Umgebungsvariablen zu konfigurierenDie Farbe sollte zu Referenzzwecken mit ANSI-Farbcodes codiert werden
quelle
GREP_COLOR
ist veraltet. Verwenden SieGREP_COLORS
stattdessen.Da ich keine Beispiele für das tatsächliche Festlegen von Farben gesehen habe, ist hier ein einfaches Setup für GNU grep:
Sei vorsichtig damit
GREP_OPTIONS
; Verwenden Sie es nicht für etwas anderes als Dinge wie--color=auto
oder es wird alle Skripte durcheinander bringen, die grep auf Ihrem System verwenden.quelle