Bash: copiar / pegar de color

12

Como todos, tengo algunos resultados coloreados en mi bash. Quiero mantener la sintaxis coloreada cuando copio un extracto a un editor HTML, por ejemplo. ¿Hay alguna manera de manejar esto?

Gracias.

AketO
fuente

Respuestas:

16

Si usted está hablando acerca de la salida coloreada de algunas utilidades de línea de comandos como ls, grep, cmake, git diff, etc, por favor nota, que no tiene ninguna relación a GNU Bash.

De todos modos, hay varias herramientas para convertir la salida coloreada con secuencias de escape ANSI a HTML:

  • aha del paquete del mismo nombre
  • ansi2htmlfrom HTML :: FromANSI Perl module (no incluido en el repositorio de Ubuntu, se puede instalar desde CPAN)
  • ansi2html.shpor pixelb (no empaquetado, descarga desde git)

El uso de todos ellos es bastante simple: leen secuencias de escape de terminal stdiny ponen HTML stdout. Pero tenga en cuenta: la mayoría de las utilidades no colorean la salida si no va a la terminal. Debe ordenarlos para que produzcan resultados coloreados explícitamente. P.ej.:

$ ls --color=always | aha | xsel -i -b

xsel -i -b aquí copiará HTML al portapapeles.

Dmitry Alexandrov
fuente
Esto ( aha) funcionó maravillosamente; ¡muchas gracias!
ShreevatsaR
2
aha - genial! Esto es casi perfecto para mi. Para poder copiar texto formateado, me adapté para enrutar a tmp, abrir en el navegador, luego simplemente copiar / pegar como para otros sitios: git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html ... y sí, sé que el OP quería el html, pero muchos de nosotros tropezaríamos aquí queriendo El formateo en general.
sabio