tree
i ls
może rozróżniać typy plików, kolorując nazwy plików w różny sposób.
tree
i ls
często wypisuje długą listę plików (w tym katalogów), więc przesyłam do wyjścia standardowe wyjście less
.
Ale less
nie zachowuje kolorów. Jak możemy sprawić, by pokazywał kolory lub w inny sposób?
Właśnie zobaczyłem połączoną listę, ale przesyłanie do less -R
lub less -r
nie działa. Mój system operacyjny to Ubuntu 12.04. less
jest wersja 444: 09 czerwca 2011 r.
ls
(nietree
), dla których należy powiedzieć, że niektóre implementacje wymuszają wyjście kolorów, gdy wyjście nie trafia do terminala (oprócz tego, żeless -R
jest potrzebne)tree -C | less -R
?-C
Opcja jest równoważna z drzewa mniej tych--color=always
, myślę, że (przynajmniej u mnie działa na Ubuntu 12.04).tree
z lub bez-C
samego wyjścia zawsze w kolorach, ale dlaczego różnią się, gdy są używane zless
?less
Usuwa kolory domyślnie, chyba że dasz mu-R
opcję, która mówi, że do opuszczenia go i 2.tree
als
i innych programów zwykle włączyć kolorowanie off, gdy wykryje ich wyjście idzie do innego programu (jakless
) zamiast bezpośrednio do terminala, chyba że wymusisz kolorowanie za pomocą-C
lub--color=always
.Odpowiedzi:
Zakładam, że używasz
ls --color=auto
, co mówils
o używaniu koloru w trybie „automatycznym”. Tryb „Automatyczny” informuje,less
czy STDOUT jest terminalem, a jeśli tak, użyj koloru, w przeciwnym razie nie używaj koloru. Kiedy wpinaszls
doless
, STDOUT nie jest terminalem, jest podłączony do STDINless
, czyli normalnej rury.Rozwiązanie, użycie
ls --color
lubls --color=always
.Jednak teraz prowadzi to do kolejnego potencjalnego problemu. W zależności od twojego
less
, może nie wyświetlać koloru, ale zamiast tego wyświetlać kody ucieczki. Rozwiązaniem jest użyćless -R
. To mówi,less
aby przejść przez kody ucieczki dla kolorów ucieczki ANSI. Nie chcesz używać,-r
ponieważ spowoduje to problemy z długimi, owijającymi się liniami, ponieważ less nie oblicza poprawnie długości linii.Tak pełne rozwiązanie:
Podobnie dla
tree
:źródło