Dato un comando che cambia il suo comportamento quando il suo output sta andando a un terminale (ad esempio produce output colorato), come può quell'output essere reindirizzato in una pipeline preservando il comportamento modificato? Ci deve essere un'utilità per questo, di cui non sono a conoscenza.
Alcuni comandi, come grep --color=always
, hanno flag di opzione per forzare il comportamento, ma la domanda è come aggirare i programmi che si basano esclusivamente sul test del loro descrittore di file di output.
Se è importante, la mia shell è bash
su Linux.
Risposta accettata:
Potresti ottenere ciò di cui hai bisogno usando unbuffer
.
unbuffer
è un tcl
/ expect
sceneggiatura. Guarda la fonte se vuoi. Nota anche la sezione AVVERTENZE in man.
Tieni inoltre presente che non esegue alias come:
alias ls='ls --color=auto'
a meno che non si aggiunga un trucco come notato da Stéphane Chazelas:
Se esegui un alias unbuffer='unbuffer '
(notare lo spazio finale), quindi gli alias verranno espansi dopo unbuffer
.