Muchos programas que generan resultados en color detectan si están escribiendo en un TTY y desactivan los colores si no lo están. Esto se debe a que los códigos de color son molestos cuando solo desea capturar el texto, por lo que intentan "hacer lo correcto" automáticamente.
La forma más sencilla de capturar la salida de color de un programa como ese es decirle que escriba color aunque no esté conectado a un TTY. Tendrá que leer la documentación del programa para averiguar si tiene esa opción. (por ejemplo, grep
tiene la --color=always
opción).
También puede usar el expect
script unbuffer
para crear un pseudo-tty como este:
echo barney | unbuffer grep barney | sed -n 1,$\ p
less
puede aceptar entradas de texto coloreadas (agradable :) ... por ejemplo:tree -C ~/ |less -R
ols -lR --color=always . |less -R