Frage Farben in bash nach dem Durchleiten von weniger?


Wenn ich Dircolors definiert habe, ist das Leben voll von ... Farbe.

Wenn ich pfeife ls durch less Um herum zu rollen, verliere ich die Farben.

Irgendwelche Vorschläge?


93
2018-06-16 13:30


Ursprung




Antworten:


Höchstwahrscheinlich dein ls ist Alias ​​zu ls --color=auto, die erzählt ls nur Farben zu verwenden, wenn seine Ausgabe ein tty ist. Wenn Sie tun ls --color (was moralisch äquivalent ist zu ls --color=always), das wird es zwingen, Farben anzuschalten.

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

less braucht -R, auch.


95
2018-06-16 13:38



Warum würdest du es nicht als eine gute Idee bezeichnen, ls zu alias zu machen? ls --color oder ls --color=alwaysfür diese Angelegenheit? - j08lue
@ j08lue Wenn Sie einen Befehl ausführen, der keine Farbe verarbeitet, erhalten Sie einige Junk-Zeichen, die den Befehl durcheinander bringen können. Zum Beispiel habe ich es getan ls --color=always | less und habe: ESC[01;32mexecute_once.shESC[0m (Ich weiß, das ist alt und dir ist es wahrscheinlich egal, aber für zukünftige Besucher kann das nützlich sein) - Ryan Amos
@RyanAmos als zukünftiger Besucher, danke. :) - malvim


Versuchen Sie weniger mit der Option -R wie folgt:

command | less -R

Das funktioniert für mich in einem One-Liner wie diesem:

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

Und so auch:

ls --color | less -R

Aber Sie müssen die primäre Ausgabe (die Ausgabe von ls in diesem Fall) etwas mit dem Parameter --color optimieren.


51
2018-06-16 13:33



Danke, das funktioniert auch für Ack-Grep. ack-grep my_string --farbe | weniger -R - igniteflow
--color wird nicht erkannt: ls: illegale Option - - Running bash on osx. - Scott Biggs
@ Scott Biggs: In OSX gibt es keine - Farbe; versuche ls -G
@ Lu-Chi, Sogar mit -G, die Farben fehlen - Iulian Onofrei
In OS X müssen Sie die Umgebungsvariable CLICOLOR_FORCE (auf alles) setzen, wenn die Ausgabe von ls nicht an ein Terminal gerichtet ist. Das funktioniert bei mir: CLICOLOR_FORCE = ls -G | weniger -R - jooon