son salidas salida redirigir redireccionar que los filtros filtro fichero enviar comandos comando canal archivo linux bash terminal stdout

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.