Ogni volta che utilizzo grep
e lo reindirizzo ad un altro programma, l'opzione --color
non viene rispettata. So che potrei usare --color=always
, ma ha anche alcuni altri comandi che vorrei ottenere l'output esatto di quel comando come l'output che otterrei se fossi in una tty.Fingere di essere un tty in bash per qualsiasi comando
Quindi la mia domanda è, è possibile ingannare un comando nel pensare che il comando sia eseguito all'interno di un tty?
Ad esempio, l'esecuzione
grep --color word file # Outputs some colors
grep --color word file | cat # Doesn't output any colors
mi piacerebbe essere in grado di scrivere qualcosa di simile:
IS_TTY=TRUE grep --color word file | cat # Outputs some colors
This question sembra avere uno strumento che potrebbe fare quello che voglio: empty - run processes and applications under pseudo-terminal (PTY), ma da quello che ho potuto leggere nei documenti, non sono sicuro che possa essere d'aiuto per il mio problema
ti rendi conto che '--color' cambia il flusso di dati effettivo che viene inviato al comando più in basso nella pipeline? La conseguenza sarebbe la rottura di un altro codice ragionevole perché "searchTarget" non è "^ [32; 4gsearchTarget^[32; h' (o simile). In bocca al lupo. – shellter
Sì, mi rendo conto che nei miei script non userò mai quella tecnica per colorare greps, ma alcuni comandi che uso sembrano produrre qualcosa di diverso quando vengono usati al di fuori di una tty (ad esempio 'ag', silversearcher, ma anche mocha ,. ..) e non ho il tempo di imparare tutte le opzioni per stampare con lo stesso formato ogni volta che inserisco questi comandi in altri) – edi9999
Hmmm .. Penso che questo sia venuto fuori prima con alcune risposte sorprendenti (per me). Hai cercato molto per '[linux] (o) [bash] --color'? In bocca al lupo. – shellter