Programy wykrywające potok na jego wyjściu, aby wyłączyć kolorowanie

3

Niektóre programy mają kolorowe wyjście (takie jak greplub emergew moim systemie Gentoo), ale jeśli ich dane wyjściowe są przesyłane potokowo, na lessprzykład do lub do pliku, kolorowe wyjście jest wyłączone.

Wiem jednak, że lessjest w stanie wyświetlać kolorowe wydruki, takie jak polecenia

ccze -A < /var/log/emerge.log | less

wyświetlać kolorowy tekst. Mam tutaj dwa pytania:

  • Czy można „oszukać” inne kolorowe programy wyjściowe, aby zachować podbarwienie?
    Chciałbym zachować kolory, jeśli na przykład:

    emerge -puND world | less
  • Jak te programy wykrywają, że ich dane wyjściowe są przekierowywane?

Levans
źródło
1
Ze strony podręcznika emerge: --color <y | n> Włącz lub wyłącz wydruk kolorowy. Ta opcja zastąpi NOCOLOR (patrz make.conf (5)) i może być również używana do wymuszenia wydruku kolorowego, gdy standardowe wyjście nie jest tty (domyślnie kolor jest wyłączony, chyba że standardowe jest tty).
gniourf_gniourf

Odpowiedzi:

3

Od przepełnienia stosu - po wykryciu tty :

Większość poleceń, które wypisują te kody kolorów, jawnie sprawdza, czy stdout / stderr jest tty (za pomocą polecenia isatty).

From stackoverflow - przy przechwytywaniu pokolorowanych wydruków :

Jednym ze sposobów przechwytywania pokolorowanych danych wyjściowych jest scriptpolecenie. Uruchomienie scriptrozpocznie sesję bash, w której wszystkie nieprzetworzone dane wyjściowe zostaną przechwycone do pliku (domyślnie nazwany maszynopis).

Zobacz man scriptwięcej informacji.

MK
źródło