GNU/Linux >> Linux Esercitazione >  >> Linux

Come ingannare un comando facendogli pensare che l'output stia andando su un terminale?

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 .


Linux
  1. Come assegnare l'output di un comando a una variabile di shell?

  2. Come nascondere l'output del terminale durante l'esecuzione di un comando?

  3. Come usare vi per modificare un comando nel terminale su Linux?

  4. Come modificare un file di testo nel mio terminale

  5. Come archiviare l'output del comando nell'array in Ansible?

Come abilitare il timestamp nell'output del comando della cronologia di Linux

Come avviare la riga di comando di Linux

Come registrare tutto ciò che fai nel terminale

Come reindirizzare l'output del comando della shell

Come salvare l'output del comando in un file utilizzando il terminale Linux

Come aggiungere l'output a un file?