GNU/Linux >> Linux Esercitazione >  >> Linux

Dove vanno a finire i codici di escape Ansi quando passo a un altro processo? Posso tenerli?

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

Linux
  1. Come visualizzare l'output di un processo in esecuzione in un'altra sessione Bash?

  2. L'output di sostituzione del processo è fuori servizio?

  3. L'ID thread di un processo multithread può essere uguale all'ID processo di un altro processo in esecuzione?

  4. Come posso eliminare un utente in Linux quando il sistema dice che è attualmente utilizzato in un processo

  5. Cosa fare quando Ctrl + C non può terminare un processo?

Come posso mantenere vivo un processo dopo aver chiuso la sessione putty?

Come posso conoscere il percorso assoluto di un processo in esecuzione?

Terminale che supporta il codice di escape corsivo ANSI?

Come posso analizzare l'output del comando find quando i nomi dei file contengono spazi?

Cosa significa il simbolo della pipe Linux | fare?

Cosa succede quando un file che è stato impaginato al 100% nella cache della pagina viene modificato da un altro processo