Czy istnieje jakiś sposób, aby zachować koloryzacja tekstu przeszły przez rurę |
do head
, tail
, less
, itd.?
linux
pipe
gnome-terminal
Timofey Gorszkow
źródło
źródło
head
,tail
itp. to nie te usuwające kolory, to program generujący dane, które zwykle sprawdzają, czy dane wyjściowe trafiają do konsoli (kolorowe), pliku lub potoku (nie kolorowe).Odpowiedzi:
Przypuszczam, że prowadzisz rurociągi
ls
i chcesz zachować kody kolorów terminali. Możesz powiedziećls --color=always
(zamiast domyślnego--color=auto
), co zachowa kody, ale to nie zagwarantuje, że rzecz, którą przesyłasz, wie, jak je zrozumieć.Jeśli użyjesz
glark
zamiastgrep
tego, spróbujesz wyświetlić kolory.Jeśli korzystasz
less
z-R
niego będzie próbował wyświetlania kolorów.źródło
git
. Odkryłem, że ma podobną konfigurację (np.git config color.diff always
), Która utrzymuje kolorowanie.git diff
dane wyjściowe jako dane wejściowe, ponieważ zawsze będą generować kody specjalne ANSI.grep "string" file.txt | head
aby upewnić się, że wynik grep jest kolorowy, właśnie zmieniłem to nagrep "string" file.txt --color=always | head
Zależy to od programu, który generuje dane wyjściowe w potoku.
head
,tail
itp. to nie te usuwające kolory, to program generujący dane, które zwykle sprawdzają, czy dane wyjściowe trafiają do konsoli (kolorowe), pliku lub potoku (nie kolorowe)Znalazłem inne pytania i odpowiedzi SU pokazujące, jak kłamać w potokowaniu programów do wyjścia tak, jakby wysyłały dane wyjściowe do konsoli (emulowanie konsoli za pomocą
unbuffer
)źródło
color=auto
trybie (aby program pomyślał, że wyjście trafia do konsoli zamiast potoku)?head
,tail
itd wykryje, że jest odprowadzone do innego programu (tak, że może on wygenerować dane bez kolorów, itp).