Wenn ich ein Programm (zum Beispiel grep
oder ls
) ohne Pager ausführe , ist die Ausgabe farbig. Wenn ich es jedoch laufen lasse less
, werden keine Farben gezeigt.
Der folgende Befehl gibt beispielsweise eine farbige Ausgabe aus:
grep -r something
aber das tut es nicht:
grep -r something | less
Warum? Wie kann ich Farben durchschauen less
?
command-line
less
Mohammad Reza Rezwani
quelle
quelle
grep --color=always "search string" * | less -R
aber ich neige dazu,most
heutzutage statt zu verwendenless
. AUCH: gnu.org/software/src-highlite ist ein farbiger Textmarker (funktioniert auch weniger)python-pygments
?Antworten:
Hier gibt es zwei Probleme:
ls
- die die Farbunterstützung automatisch erkennen - werden von Pipes nicht unterstütztless
ist standardmäßig so eingestellt, dass nur Farbcodes angezeigt werden.Beide können überwunden werden, aber es ist ein bisschen klobig:
Das ist nicht
ls
spezifisch. Viele Befehle, die Farbe unterstützen, haben auch ein Überschreibungsargument.Eine etwas ausführlichere Antwort besteht darin, zu
ls
prüfen, ob sein STDOUT zu einem realen Terminal gehört oder nicht. Wenn Sie Dinge umleiten, wird das STDOUT auf das STDIN des nächsten Befehls gesetzt.Sie können dies bei der Arbeit im
ls
Quellcode sehen . Es verwendet denisatty
Befehl (eine POSIX-Kernschnittstelle), um die Situation zu ermitteln:Sind die Farben standardmäßig aktiviert ?:
Versuchen wir, in mehreren Spalten auszugeben:
grep
hat eine sehr ähnliche Sache, sofern nicht ausdrücklich außer Kraft gesetzt, wird es Farbunterstützung erkennen, mitisatty
:quelle
--color
Argument:ack-grep -i select --color | less -R
-C
Argument erzwingen .Wenn Sie sich
less
allgemein für Farben interessieren , sollten Sie sich diese ansehenlesspipe.sh
. Siehe zum Beispiel http://freecode.com/projects/lesspipe .Es koloriert auch Shell-Skripte, Perl-Skripte usw. ähnlich einem Texteditor, jedoch ohne die Verwendung eines "Vorverarbeitungs" -Programms, um die Kolorierung durchzuführen.
quelle