Czy istnieje jakiś sposób, aby zachować koloryzacja tekstu przeszły przez rurę |
do head
, tail
, less
, itd.?
Czy istnieje jakiś sposób, aby zachować koloryzacja tekstu przeszły przez rurę |
do head
, tail
, less
, itd.?
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
zamiast grep
tego, spróbujesz wyświetlić kolory.
Jeśli korzystasz less
z -R
niego będzie próbował wyświetlania kolorów.
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
)
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).
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).