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 cat
lo 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 cat
los 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/a
y luego cat /tmp/a
, veo los colores. Verificar con od
confirma que el archivo usa colores ANSI.
Así que creo que deberías comprobar si tu terminal soporta colores ANSI (y están habilitados).