Preserva as cores enquanto canaliza para o tee

37
ls -l --color=auto | tee output.log

Sem pipe / tee é colorido. Como posso fazer isso para que fique colorido enquanto estiver usando tee (pode ser colorido apenas na tela, não me importo com as cores nos logs).

    
por Paweł Gościcki 01.11.2011 / 11:28

2 respostas

61

Basta inserir unbuffer antes de qualquer comando para fazê-lo pensar que está gravando em uma saída interativa, mesmo que esteja realmente inserindo em outro executável. Isso preservará a cor no caso de ls .

Por exemplo

unbuffer ls -l --color=auto | tee output.log

Se você ainda não o instalou, no Ubuntu e em outras distribuições Linux do Debian você pode instalar unbuffer fazendo.

sudo apt-get install expect-dev
    
por 10.05.2014 / 00:37
8

Use a opção ls --color=always normalmente, ela não irá colorir a saída para um pipeline - por razões óbvias.

A página man diz

With --color=auto, color codes are output only if standard output is connected to a terminal (tty).

    
por 01.11.2011 / 13:01

Tags