GNU/Linux >> Tutoriels Linux >  >> Linux

Comment un programme décide-t-il d'avoir ou non une sortie colorée ?

Lorsque j'exécute une commande à partir d'un terminal qui imprime une sortie colorée (telle que ls ou gcc ), la sortie couleur est imprimée. D'après ce que j'ai compris, le processus génère en fait des codes d'échappement ANSI et le terminal formate la couleur.

Cependant, si j'exécute la même commande par un autre processus (par exemple une application C personnalisée) et que je redirige la sortie vers la propre sortie de l'application, ces couleurs ne persistent pas.

Comment un programme décide-t-il de produire ou non du texte au format couleur ? Existe-t-il une variable d'environnement ?

Réponse acceptée :

La plupart de ces programmes n'envoient que des codes de couleur à un terminal par défaut ; ils vérifient si leur sortie est un TTY, en utilisant isatty(3) . Il existe généralement des options pour remplacer ce comportement :désactiver les couleurs dans tous les cas ou activer les couleurs dans tous les cas. Pour GNU grep par exemple, --color=never désactive les couleurs et --color=always les active.

Dans un shell, vous pouvez effectuer le même test en utilisant le -t test opérateur :[ -t 1 ] ne réussira que si la sortie standard est un terminal.


Linux
  1. Comment Gzip uniquement si Thesqldump ne génère pas d'erreur ?

  2. Comment démarrer Grep multi-thread dans le terminal ?

  3. Comment fonctionne la commande Exit sur un terminal Unix ?

  4. Comment ne rien faire pour toujours de manière élégante ?

  5. Linux - Ldd ne trouve pas de chemin, comment ajouter ?

Comment réparer l'erreur "Le référentiel n'a pas de fichier de version" dans Ubuntu

Comment compiler C, C++ et Java à l'aide de Terminal sous Linux

Comment rediriger la sortie du programme comme son entrée

Comment copier la sortie du terminal ?

GPG n'a pas assez d'entropie

Comment désactiver AVERTISSEMENT :apt n'a pas d'interface CLI stable...