Muitos programas que geram saída colorida detectam se estão gravando em um TTY e desativam as cores se não estiverem. Isso ocorre porque os códigos de cores são irritantes quando você deseja capturar apenas o texto, então eles tentam "fazer a coisa certa" automaticamente.
A maneira mais simples de capturar a saída em cores de um programa como esse é pedir para ele escrever cores, mesmo que não esteja conectado a um TTY. Você precisará ler a documentação do programa para descobrir se ele possui essa opção. (por exemplo, grep
tem a --color=always
opção.)
Você também pode usar o expect
script unbuffer
para criar um pseudo-tty como este:
echo barney | unbuffer grep barney | sed -n 1,$\ p
less
a entrada pode aceitar colorizado texto (nice :) ... por exemplo:tree -C ~/ |less -R
ouls -lR --color=always . |less -R