Kolory w bash po przepuszczeniu przez mniej?

106

Kiedy mam zdefiniowane dircolors, życie jest pełne ... koloru.

Kiedy rura lspoprzez lessprzewijanie wokół tracę kolory.

Jakieś sugestie?

MathewC
źródło

Odpowiedzi:

105

Najprawdopodobniej twój lsjest aliasowany ls --color=auto, co mówi, lsaby używać kolorów tylko wtedy, gdy jego wynik jest tty. Jeśli to zrobisz ls --color(co jest moralnie równoważne ls --color=always), wymusi to włączenie kolorów.

Możesz również zmienić swój alias, aby to zrobić, ale tak naprawdę nie nazwałbym tego dobrym pomysłem. Lepiej zrobić inny alias --color.

lessteż potrzebuje -R.

chaos
źródło
5
Dlaczego nie nazwałbyś tego dobrym aliasem na alias do ls --colorlub ls --color=always, jeśli o to chodzi?
j08lue
10
@ j08lue, jeśli przepłyniesz przez polecenie, które nie obsługuje kolorów, otrzymasz kilka śmieciowych znaków, które mogą zepsuć polecenie. Na przykład zrobiłem ls --color=always | lessi dostałem: ESC[01;32mexecute_once.shESC[0m(Wiem, że to jest stare i prawdopodobnie nie obchodzi cię to, ale dla przyszłych gości może się to przydać)
Ryan Amos
55

Wypróbuj mniej dzięki opcji -R takiej jak ta:

command | less -R

Działa to dla mnie w jednej linijce:

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

I tak też:

ls --color | less -R

Ale musisz nieco ulepszyć pierwotne wyjście (w tym przypadku wyjście ls) za pomocą parametru --color.

wzzrd
źródło
Dzięki, działa to również dla ack-grep. ack-grep my_string --color | mniej -R
igniteflow 30.01.2014
1
- kolor nie jest rozpoznawany: ls: niedozwolona opcja - - Uruchamianie bash na osx.
Scott Biggs
1
@ Scott Biggs: w OSX nie ma opcji --color; spróbuj ls -G
@ Lu-Chi, mimo -Gto brakuje kolorów
Iulian Onofrei
1
-ROpcja jest skrótem --RAW-CONTROL-CHARS.
Rory O'Kane