Mostrar archivo con colores ANSI

Mostrar archivo con colores ANSI

Tengo un archivo con colores ANSI.

prueba.txt:
\e[0;31mExample\e[0m

Me gustaría mostrar el contenido de este archivo en una terminal, como catlo hace, pero también me gustaría mostrar los colores.

Respuesta1

Estaba buscando una solución a esta pregunta de bash exacta. Casi me pierdo el comentario de @Thomas Dickey que me proporcionó la solución más elegante.

echo -e $(cat test.txt)

Algunas cosas que no funcionaron para mí son (aparentemente no puedes hacer eco de las cosas)

cat test.txt | echo -e

o

less -R test.txt

Otro problema que tuve fue que echo -e no imprimió bien las nuevas líneas y los espacios en blanco contiguos dentro del archivo. Para imprimirlos, utilicé lo siguiente.

echo -ne $(cat test.txt | sed  's/$/\\n/' | sed 's/ /\\a /g')

Esto funciona para un archivo test.txt que contiene

\e[0;31mExa         mple\e[0m
\e[0;31mExample line2\e[0m

Respuesta2

Si no ves el color de catlos caracteres de control, probablemente no estén intactos.

Algunas herramientas eliminan los caracteres de control pero los dejan al final.

Comparar:

 echo -e "\e[0;31mExample\e[0m foo"

a

 echo -e "[0;31mExample[0m foo" 

Es posible que puedas reconstruir la secuencia de control a partir de lo que queda, aunque no es infalible ya que la expresión regular que usas podría generar accidentalmente secuencias de caracteres no deseadas, etc. Pero, por ejemplo:

echo -e "[0;31mExample[0m foo" | sed "s:\[\([0-9]*[;m]\):^[[\1:g"

restauraría el color a la cadena de ejemplo.

Respuesta3

Hay un paquete que contiene un ejecutable que hace específicamente esto:

ttyrec

Puede instalarlo en instalaciones de Linux derivadas de Debian con cualquiera de los dos

sudo apt install ttyrec

o en RedHat con

sudo yum install ttyrec

El comando para reproducir un archivo correctamente se ejecuta con

ttyplay <filename>

Consulte también un paquete llamado tty2gif, que convierte archivos similares a gif.

Respuesta4

Debería funcionar de forma predeterminada. Por ejemplo, si lo hago ls --color=always > /tmp/ay luego cat /tmp/a, veo los colores. Verificar con odconfirma que el archivo usa colores ANSI.

Así que creo que deberías comprobar si tu terminal soporta colores ANSI (y están habilitados).

información relacionada