linux - salidas - ¿Cómo escribir stdout a archivo con colores?
redirigir salida comando linux a fichero (4)
Muchas veces (no siempre) la salida estándar se muestra en colores. Normalmente mantengo cada registro de salida en un archivo diferente también. Naturalmente en el archivo, los colores ya no se muestran.
Me gustaría saber si hay una forma (en linux) de escribir la salida en un archivo con colores. Estoy tratando de usar tee
para escribir la salida de vagrant en un archivo, de esta manera todavía puedo ver la salida (cuando corresponda). Quiero usarlo específicamente para vagrant (puede cambiar en el futuro, por supuesto ...)
¡Gracias!
Dado que muchos programas solo emitirán secuencias de colores si su stdout es un terminal, una solución general a este problema requiere engañarlos para que crean que la canalización en la que escriben es un terminal. Esto es posible con el comando de script
de bsdutils:
script -q -c "vagrant up" filename.txt
Esto escribirá la salida desde vagrant up
filename.txt (y el terminal). Si el eco no es deseable,
script -q -c "vagrant up" filename > /dev/null
Lo escribiré sólo en el archivo.
Descubrí que usando la herramienta llamada ansi2html.sh
Es la forma más sencilla de exportar datos de terminales coloridos a archivos html,
Los comandos para usarlo son:
ls --color=always | ansi2html.sh --palette=solarized > ~/Desktop/ls.html
- Todo lo que se necesita es enviar la salida utilizando un conducto y luego enviar la salida estándar a un archivo html simple
Puede guardar las secuencias ANSI que colorean su salida en un archivo:
echo a | grep --color=always . > colour.txt
cat colour.txt
Sin embargo, algunos programas tienden a no usarlos si su salida no va a la terminal (es por eso que tuve que usar --color-always
con grep
).
También puede colorear su salida con eco con diferentes colores y guardar la salida de color en el archivo. Ejemplo
echo -e ''/E[37;44m''"Hello World" > my_file
También deberías familiarizarte con los códigos de color del terminal.
Usando tee
< command line > |tee -a ''my_colour_file''
Abre tu archivo en cat
cat ''my_colour_file''
El uso de una tubería con nombre también puede funcionar para redirigir toda la salida de la tubería con colores a otro archivo
por ejemplo
Crear una tubería con nombre
mkfifo pipe.fifo
Cada línea de comando lo redirige a la tubería de la siguiente manera
<command line> > pipe.fifo
En otro terminal, redirigir todos los mensajes de la tubería a su archivo.
cat pipe.fifo > ''my_log_file_with_colours''
Abra su archivo con cat y vea los resultados esperados.