Hay herramientas que proporcionan resultados en color:
dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
La pregunta es: ¿Cómo convertir su salida coloreada de programa arbitrario en un archivo html coloreado?
Otros formatos de salida también pueden ser adecuados (LaTeX sería genial). Creo que html es un buen punto de partida, ya que es fácil convertirlo a otros formatos.
(Para saber cómo mantener los códigos de color de la terminal, siga la respuesta:
https://unix.stackexchange.com/a/10832/9689
... | unbuffer command_with_colours arg1 arg2 | ...
- el desbloqueo de la herramienta es parte de lo esperado )
Respuestas:
La respuesta a esta pregunta es probablemente lo que quieres.
Se vincula a estas herramientas, que realizan la conversión que está buscando:
Paquete Perl HTML :: FromANSI
aha , un programa en lenguaje C ( repositorio github )
fuente
aha
También está disponible en Ubuntu:sudo apt install aha
. Pero tenga en cuenta que algunos comandos suprimirán los colores cuando la salida es una tubería. Entonces, al enviar resultados a aha, es posible que deba agregar opciones a sus comandos. Parals
ogrep
sería--color=always
.O simplemente un script de shell
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Más detalles de este script http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
fuente
Puede probar
vim
con el complemento AnsiEsc.vim para ver los colores ANSI a través de códigos de escape, luego redirigir a la salida estándar avim -
(asegúrese de haber activado:syntax on
). A continuación, convertir el archivo a HTML con el comando vim::TOhtml
. El archivo HTML generado debe tener salida de color.Para convertir el código fuente de manera no interactiva en html, pruebe el siguiente comando:
Fuente:
:help g:html_no_progress
(parte de:help TOhtml
).Nota: Puede usar en
-
lugar demyfile.c
, para convertir el código de la entrada estándar.fuente
:help TOhtml
o:help g:html_no_progress
.Puedes usar vim. Esto es parte de un script que utilizo para convertir la salida diff a HTML.
Después de esto, ejecuté sed para cambiar el CSS y el título para que sea exactamente lo que quiero que sean.
* Editar: debería haber mencionado que para obtener color, debe tener activado el resaltado de sintaxis. Lo hago en mi .vimrc, pero si quisieras agregarlo aquí, sería otra línea como
fuente
ansi2html , en pypi.
Uno puede obtener cantidades inmoderadas de diversión al canalizar la salida de la carcasa a través de lolcat y luego a través de ansi2html. Algo como:
fuente
lolcat
idea, pero estoy demasiado ocupado riéndome.ansi2html
ejecutable binario incompatibleActualización: agregué un
perl
método, usando el módulo HTML :: FromANSI de CPAN .. Para instalarlo, simplemente extráigalo a un directorio y ejecútelo como root:perl -MCPAN -e 'install HTML::FromANSI'
desde ese directorio. La característica particular para satisfacer su solicitud es un script llamadoansi2html
. Curiosamente, muestra la misma pérdida de color después de la superposiciónk
en los nombres de archivo, al igual que el script de elisp-shell ... Aquí hay un ejemplo de uso:Aquí está la salida html. como se ve en Firefox:
Aquí hay un método que usa un script de emacs elisp-shell ... por ejemplo, llamado htmlize ... Emacs no necesita estar ejecutándose.
Originalmente lo probé sobre un fondo negro, pero noté que, por alguna razón, un fondo blanco no funciona bien con uno de los códigos de escape introducidos
\e[K
, que parece ser ERASE_LINE (borrar la línea actual de salida del terminal) . He agregado una línea para eliminar este código de escape. Ahora funciona para un fondo blanco.Aquí hay un ejemplo de salida resaltada de color de
ls
ser canalizadagrep
para resaltar más el color.Este es el
elsip-shell
guión.Aquí hay una muestra de la salida html, en Firefox ... Si tengo tiempo, investigaré más sobre el tema de los códigos ANSI superpuestos. donde los
k
s rojos se superponen a los nombres de archivo verdes, pero eso solo está ahí debido a una expresión regular de prueba elegida apresuradamente para grep ... (tal vez eso sea algo que\e[K
influya ...fuente
Para aquellos que tienen un comando escrito en el supuesto de que la salida canalizada nunca tendrá color (por ejemplo, algunos marcos de prueba), puede resultar útil utilizar la utilidad de script para guardar primero la salida ansi. Esto puede ser empujado a aha o las otras utilidades mencionadas.
fuente
Esto es solo un seguimiento de la solución @ user17591 - vim scripting :
chmod y
Uso:
htmlvim file
(para producir file.html)fuente