Antworten:
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 -rsollte in der Regel bevorzugt über sein grep -Rwie 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.
Ich habe dies in meinem .bashrc festgelegt, anstatt grep mit einem Alias neu zu definieren:
export GREP_OPTIONS="--color=auto"
Für mich funktioniert das unter Linux, MacOSX & FreeBSD.
GREP_OPTIONSsollte als schädlich angesehen werden. Ich empfehle aliasstattdessen zu verwenden . Siehe hier: bugs.launchpad.net/ubuntu/+bug/67141
Ich 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.
$ cat `which grp`
#!/usr/bin/env bash
grep -rI --color --exclude-dir=\.bzr --exclude-dir=\.git --exclude-dir=\.hg --exclude-dir=\.svn --exclude-dir=build --exclude-dir=dist --exclude=tags $*
Rufen Sie dies auf mit:
$ grp pattern dir
z.B
$ grp pattern .
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:
-r : search subdirs recursive
-I : skip binary files
--color : highlight matches in color
--exclude-dir : skip specified directories and their subdirs
--exclude : skip specified files
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 .
Die --colorOption 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 konfigurieren
export GREP_COLOR="1;33"
Die Farbe sollte zu Referenzzwecken mit ANSI-Farbcodes codiert werden
Black 0;30 Dark Gray 1;30
Blue 0;34 Light Blue 1;34
Green 0;32 Light Green 1;32
Cyan 0;36 Light Cyan 1;36
Red 0;31 Light Red 1;31
Purple 0;35 Light Purple 1;35
Brown 0;33 Yellow 1;33
Light Gray 0;37 White 1;37
GREP_COLORist veraltet. Verwenden Sie GREP_COLORSstattdessen.
Da ich keine Beispiele für das tatsächliche Festlegen von Farben gesehen habe, ist hier ein einfaches Setup für GNU grep:
# turn on colors, natch.
export GREP_OPTIONS="--color=auto"
if [[ $(echotc Co) -ge 256 ]]; then
# 256 color terminals
export GREP_COLORS="mt=38;5;118:sl=:cx=:fn=38;5;18:ln=1;30:bn=37:se=30"
else
# everybody else
export GREP_COLORS="mt=31:sl=:cx=:fn=34:ln=1;30:bn=30:se=30"
fi
Sei vorsichtig damit GREP_OPTIONS; Verwenden Sie es nicht für etwas anderes als Dinge wie --color=autooder es wird alle Skripte durcheinander bringen, die grep auf Ihrem System verwenden.