4 votes

Programmes détectant un pipe sur sa sortie pour désactiver la coloration

Certains programmes ont une sortie colorée (comme grep ou emerge sur mon système Gentoo), mais si leur sortie est redirigée, par exemple vers less ou vers un fichier, la sortie colorée est désactivée.

Cependant, je sais que less est capable d'afficher une sortie colorée, comme le montrent des commandes telles que

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

qui affichent du texte coloré. J'ai donc deux questions ici :

  • Est-il possible de "tromper" d'autres programmes à sortie colorée pour conserver la coloration ?
    Je voudrais garder les couleurs si je fais par exemple :

    emerge -puND world | less
  • Comment ces programmes détectent-ils que leur sortie est redirigée ?

4voto

M K Points 2624

De stackoverflow - sur la détection du tty:

La plupart des commandes qui impriment ces codes de couleur vérifient explicitement si stdout/stderr est un tty (en utilisant la commande isatty).

De stackoverflow - sur la capture de la sortie colorisée:

Une façon de capturer la sortie colorisée est avec la commande script. Exécuter script démarrera une session bash où toute la sortie brute est capturée dans un fichier (nommé typescript par défaut).

Consultez man script pour plus d'informations.

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X