Kiedy uruchamiam program (na przykład grep
lub ls
) bez pagera, jego dane wyjściowe są kolorowe. Jednak gdy go uruchomię, przesyłam dane wyjściowe less
, kolory nie są wyświetlane.
Na przykład to polecenie wyświetla kolorowe dane wyjściowe:
grep -r something
ale to nie:
grep -r something | less
Czemu? Jak mogę zobaczyć kolory less
?
command-line
less
Mohammad Reza Rezwani
źródło
źródło
grep --color=always "search string" * | less -R
ale zwykle używammost
obecnie zamiastless
. RÓWNIEŻ: gnu.org/software/src-highlite to kolorowy zakreślacz (mniej też działa)python-pygments
?Odpowiedzi:
Istnieją tutaj dwa problemy:
ls
- które automatycznie wykrywają obsługę kolorów - nie znajdują wsparcia z potokówless
jest ustawione tak, aby wyświetlać tylko kody kolorów domyślnie.Oba można przezwyciężyć, ale jest to trochę niezgrabne:
To nie jest
ls
specyficzne. Wiele poleceń obsługujących kolor ma również argument zastępowania.Nieco bardziej dogłębną odpowiedzią jest
ls
sprawdzenie, czy jego STDOUT należy do prawdziwego terminala, czy nie. Podczas przesuwania elementów STDOUT jest ustawiany na STDIN następnego polecenia.Możesz to zobaczyć w pracy w
ls
kodzie źródłowym . Korzysta zisatty
polecenia (podstawowy interfejs POSIX), aby ustalić, jaka jest sytuacja:Czy kolory są domyślnie włączone:
Czy próbujemy generować dane w wielu kolumnach:
grep
robi bardzo podobną rzecz, chyba że zostanie to wyraźnie zastąpione, wykryje obsługę kolorów, zisatty
:źródło
--color
argument:ack-grep -i select --color | less -R
-C
argumentu.Jeśli interesują Cię kolory
less
bardziej ogólnie, możesz rzucić okiemlesspipe.sh
. Zobacz na przykład http://freecode.com/projects/lesspipe .Pokoloruje również skrypty powłoki, skrypty Perla itp. Podobnie jak edytor tekstowy, ale bez użycia programu do wstępnego przetwarzania do pokolorowania.
źródło