Ich benutze oft die Option --colour von grep, aber ich benutze oft auch weniger. Wie kann ich grep Ergebnisse zu weniger leiten und trotzdem die Färbung erhalten. (Oder ist das möglich?)
grep "search-string" -R * --colour | less
EDIT :
Ich suche eine direkte Lösung oder etwas Ähnliches.
*
das? Aus der Manpage von grep:*: The preceding item will be matched zero or more times.
Aber ich verstehe immer noch nicht ..! @JeremyPowellAntworten:
Wenn Sie es einfach ausführen
grep --color
, wirdgrep --color=auto
erkannt, ob es sich bei der Ausgabe um ein Terminal handelt, und wenn ja, werden Farben aktiviert. Wenn jedoch eine Pfeife erkannt wird, wird die Färbung deaktiviert. Der folgende Befehl:Aktiviert immer die Färbung und überschreibt die automatische Erkennung, und Sie erhalten die farbige Hervorhebung in
less
.BEARBEITEN: Obwohl die Verwendung nur
less
für mich funktioniert, erfordern ältere Versionen möglicherweise, dass das-R
Flag Farben verarbeitet, wie von dort vorgeschlagen.quelle
less -R
für die Farbcodierung von weniger korrekt interpretiert werdenless
, es kann versionsabhängig sein.grep pattern file | grep -v badpattern | grep --colour=always pattern | less -R
genau das bekam, was ich brauchte . (less
und deshalb die Chance verpasst haben, ein speziellescolorless
Werkzeug zu haben . Nur für den Namen hätte es getan werden sollen! Ich sollte wahrscheinlich einen Patch schreiben, der -R automatisch aufruft, wenn die Binärdatei als ausgeführt wirdcolorless
.$LESS
eingestellt haben-R
.Sie können dies in Ihre
.bashrc
Datei einfügen:oder erstelle einen Alias wie diesen:
und Sie müssen die
-R
Option für verwendenless
, wie von dort darauf hingewiesenquelle
grep
mitGREP
, oder die überschreiben--color
Option manuell.In diesem Fall ziehe ich es vor, kleine sh-Dateien zu erstellen und sie anzulegen
/usr/local/bin
.Ich benutze
grep
in der Regel in der rekursiven Art und Weise aufpwd
, so das ist mein persönliches Skript:Und dann habe ich es einfach so kopiert
/usr/local/bin/g
(ja, ich benutze es oft)quelle
g() { grep --color=always -r "$@" . | less -R }
funktioniert identisch und wird wahrscheinlich (geringfügig) eine bessere Leistung liefern.Machen Sie keinen Alias "grep", besser "less", der niemals von Muscheln verwendet wird. In Ihrem
.bashrc
gerade setzen:alias less="less -r"
.quelle
grep --color=always
und verwendenless -R
. Beachten Sie, dass grep nur weiß, dass es in einen anderen Prozess geleitet wird, und die--color=auto
Option ausschließlich diese Informationen verwendet, um zu entscheiden, ob Farben ausgegeben werden oder nicht.less
Option-r
anders ist als-R
. Ist wahrscheinlich-R
sicherer.less
mit dem Beispiel, das bereits die Option "--color" verwendet.less
unterstützt eine$LESS
Umgebungsvariable. Anstelle eines Aliasexport LESS='-R'
könnte es also vorzuziehen sein.Ich muss rennen
mit dem Flag -r nach less , um dies auszuführen.
quelle
*
das? Aus der Manpage von grep:*: The preceding item will be matched zero or more times.
Aber ich verstehe immer noch nicht ..!