A volte voglio reindirizzare l'output codificato a colori da un processo, ad es. grep... ma quando lo invio a un altro processo, ad es. sed, i codici colore sono persi...
C'è un modo per mantenere intatti questi codici?
Ecco un esempio che perde l'output colorato:
echo barney | grep barney | sed -n 1,$\ p
Risposta accettata:
Molti programmi che generano output a colori rilevano se stanno scrivendo su un TTY e disattivano i colori se non lo sono. Questo perché i codici colore sono fastidiosi quando vuoi solo catturare il testo, quindi cercano di "fare la cosa giusta" automaticamente.
Il modo più semplice per acquisire l'output del colore da un programma del genere è dirgli di scrivere il colore anche se non è collegato a un TTY. Dovrai leggere la documentazione del programma per scoprire se ha questa opzione. (ad esempio, grep
ha il --color=always
opzione.)
Puoi anche usare expect
script unbuffer
per creare una pseudo-tty come questa:
echo barney | unbuffer grep barney | sed -n 1,$\ p