Je veux parfois diriger la sortie codée par couleur d'un processus, par exemple. grep… mais quand je le dirige vers un autre processus, par exemple. sed, les codes couleurs sont perdus…
Est-ce un moyen de garder ces codes intacts ?
Voici un exemple qui perd la sortie colorée :
echo barney | grep barney | sed -n 1,$\ p
Réponse acceptée :
De nombreux programmes qui génèrent une sortie colorée détectent s'ils écrivent sur un TTY et désactivent les couleurs si ce n'est pas le cas. En effet, les codes de couleur sont ennuyeux lorsque vous ne souhaitez capturer que le texte, ils essaient donc de "faire ce qu'il faut" automatiquement.
Le moyen le plus simple de capturer la sortie couleur d'un programme comme celui-ci est de lui dire d'écrire en couleur même s'il n'est pas connecté à un TTY. Vous devrez lire la documentation du programme pour savoir s'il a cette option. (par exemple, grep
a le --color=always
option.)
Vous pouvez également utiliser le expect
script unbuffer
pour créer un pseudo-tty comme celui-ci :
echo barney | unbuffer grep barney | sed -n 1,$\ p