GNU/Linux >> Linux Esercitazione >  >> Linux

Come fa un programma a decidere se avere o meno stampe a colori?

Quando eseguo un comando da un terminale che stampa un output colorato (come ls o gcc ), viene stampato l'output a colori. Da quanto ho capito, il processo sta effettivamente emettendo codici di escape ANSI e il terminale formatta il colore.

Tuttavia, se eseguo lo stesso comando con un altro processo (ad esempio un'applicazione C personalizzata) e reindirizza l'output all'output dell'applicazione, questi colori non persistono.

Come fa un programma a decidere se produrre o meno testo in formato colore? C'è qualche variabile d'ambiente?

Risposta accettata:

La maggior parte di questi programmi invia solo codici colore a un terminale per impostazione predefinita; controllano se il loro output è un TTY, usando isatty(3) . Di solito ci sono opzioni per ignorare questo comportamento:disabilitare i colori in tutti i casi o abilitare i colori in tutti i casi. Per GNU grep ad esempio, --color=never disabilita i colori e --color=always li abilita.

In una shell puoi eseguire lo stesso test usando il -t test operatore:[ -t 1 ] avrà successo solo se lo standard output è un terminale.


Linux
  1. Come eseguire il gzip solo se Thesqldump non presenta errori?

  2. Come inviare sequenze di tasti (f5) dal terminale a un programma Gui?

  3. “coda -f | Iconv -fsjis” non genera nulla?

  4. Linux – Ldd non trova il percorso, come aggiungere?

  5. Come reindirizzare l'output del programma come input

Come risolvere l'errore "Il repository non ha un file di rilascio" in Ubuntu

Come compilare C, C++ e Java utilizzando Terminal su Linux

Come non fare nulla per sempre in modo elegante?

Come eseguo l'output di testo colorato su un terminale Linux?

Il prompt bash di Docker non visualizza l'output a colori

Come copiare l'output del terminale?