Farben in bash nach weniger Piping?

106

Wenn ich dircolors definiert habe, ist das Leben voller ... Farbe.

Wenn ich Pfeife lsdurch lessverliere ich zu blättern um die Farben.

Irgendwelche Vorschläge?

MathewC
quelle

Antworten:

105

Höchstwahrscheinlich haben Sie lsein Alias ls --color=auto, das angibt , lsFarben nur dann zu verwenden, wenn die Ausgabe ein Tty ist. Wenn Sie dies tun ls --color(was moralisch äquivalent ist ls --color=always), wird dies dazu zwingen, Farben einzuschalten.

Sie könnten auch Ihren Alias ​​ändern, um das zu tun, aber ich würde das nicht wirklich eine gute Idee nennen. Besser einen anderen Alias ​​mit machen --color.

lessbraucht -Rauch.

Chaos
quelle
5
Warum würdest du es nicht eine gute Idee nennen, Alias ​​ls an ls --coloroder ls --color=alwayszu sein?
j08lue
10
@ j08lue Wenn Sie einen Befehl weiterleiten, der keine Farbe verarbeitet, werden Junk-Zeichen angezeigt, die den Befehl möglicherweise durcheinander bringen. Zum Beispiel habe ich ls --color=always | lessund bekam: ESC[01;32mexecute_once.shESC[0m(Ich weiß, das ist alt und Sie interessieren sich wahrscheinlich nicht, aber für zukünftige Besucher kann dies nützlich sein)
Ryan Amos
55

Versuchen Sie es weniger mit der Option -R wie folgt:

command | less -R

Dies funktioniert für mich in einem Einzeiler wie folgt:

ls -la | grep --color=always bash | less -r

Und so auch:

ls --color | less -R

Sie müssen jedoch die primäre Ausgabe (in diesem Fall die Ausgabe von ls) ein wenig mit dem Parameter --color anpassen.

wzzrd
quelle
Danke, das funktioniert auch bei ack-grep. ack-grep my_string --color | less -R
igniteflow
1
--color wird nicht erkannt: ls: illegale Option - - Bash auf OSX ausführen.
Scott Biggs
1
@Scott Biggs: In OSX gibt es keine --color; versuchen Sie ls -G
@ Lu-Chi, Auch mit -G, die Farben fehlen
Iulian Onofrei
1
Die -ROption ist kurz für --RAW-CONTROL-CHARS.
Rory O'Kane