it-swarm.com.de

Wenn Sie eine Pipe von grep bis less verwenden, erhalten Sie farbige Ergebnisse

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.

236
Jeremy Powell

Wenn Sie einfach grep --color ausführen, bedeutet dies, dass grep --color=auto erkennt, ob es sich bei der Ausgabe um ein Terminal handelt, und wenn ja, Farben aktiviert. Wenn jedoch eine Pfeife erkannt wird, wird die Färbung deaktiviert. Der folgende Befehl:

grep --color=always -R "search string" * | less

Aktiviert immer die Färbung und überschreibt die automatische Erkennung, und Sie erhalten die farbige Hervorhebung in less.

BEARBEITEN: Obwohl die Verwendung von nur less für mich funktioniert, erfordern ältere Versionen möglicherweise das -R-Flag, um Farben zu verarbeiten, wie von dort vorgeschlagen.

264
drrlvn

Sie können dies in Ihre .bashrc-Datei einfügen:

export GREP_OPTIONS="--color=always"

oder erstelle einen Alias ​​wie diesen:

alias grepc="grep --color=always"

und Sie müssen die Option -R für less verwenden, wie von dort darauf hingewiesen

27

In diesem Fall ziehe ich es vor, kleine sh-Dateien zu erstellen und sie auf /usr/local/bin abzulegen.
Normalerweise benutze ich grep rekursiv für die pwd, das ist also mein persönliches Skript:

#!/bin/sh
grep --color=always -r "[email protected]" . | less -R

Und dann habe ich es einfach als /usr/local/bin/g kopiert (ja, ich benutze es oft)

7
Iazel

Machen Sie keinen Alias ​​"grep", besser "less", der niemals von Shells verwendet wird. Tragen Sie in Ihren .bashrc einfach ein: alias less="less -r".

1
not2qubit

Ich muss rennen

grep --color=always -R "search string" * | less - r

mit dem -r Flag nach less , damit dies ausgeführt wird.

0