Czy istnieje jakiś sposób, aby tekst był przekazywany do głowy, ogona, mniej itd., Aby był pokolorowany?

26

Czy istnieje jakiś sposób, aby zachować koloryzacja tekstu przeszły przez rurę |do head, tail, less, itd.?

Timofey Gorszkow
źródło
Jakiś konkretny program wyjściowy? Zależy to od programu wysyłającego dane przez potok. head, tailitp. 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).
KurzedMetal

Odpowiedzi:

15

Przypuszczam, że prowadzisz rurociągi lsi 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 glarkzamiast greptego, spróbujesz wyświetlić kolory.

Jeśli korzystasz lessz -Rniego będzie próbował wyświetlania kolorów.

phogg
źródło
6
Rurociągi od git. Odkryłem, że ma podobną konfigurację (np. git config color.diff always), Która utrzymuje kolorowanie.
Timofey Gorszkow
1
@Errandir problem z tą konfiguracją polega na tym, że spowoduje to uszkodzenie dowolnego skryptu lub polecenia, które wykorzystują git diffdane wyjściowe jako dane wejściowe, ponieważ zawsze będą generować kody specjalne ANSI.
KurzedMetal
@Errandir, dzięki! Nie mam żadnych skryptów, które opierają się na czystym wyjściu z git diff, więc to działa dla mnie !! Dziękuję Ci !
Ashutosh Jindal
Użyłem tego do grep: grep "string" file.txt | headaby upewnić się, że wynik grep jest kolorowy, właśnie zmieniłem to nagrep "string" file.txt --color=always | head
Emil Stenström
13

Zależy to od programu, który generuje dane wyjściowe w potoku.

head, tailitp. 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)

KurzedMetal
źródło
Czy jest jakiś sposób na utrzymanie kolorowania w color=autotrybie (aby program pomyślał, że wyjście trafia do konsoli zamiast potoku)?
Timofey Gorszkow
@KurzedMetal Jak działa program, na przykład head, tailitd wykryje, że jest odprowadzone do innego programu (tak, że może on wygenerować dane bez kolorów, itp).
Jorge Bucaran
@JorgeBucaran stackoverflow.com/a/7601564/236871
KurzedMetal