Bash: copier / coller en couleur

12

Comme tout le monde, j'ai quelques sorties colorisées dans mon bash. Je souhaite conserver la syntaxe colorisée lors de la copie d'un extrait dans un éditeur HTML par exemple. Existe-t-il un moyen de gérer cela?

Merci.

AketO
la source

Réponses:

17

Si vous parlez de sortie colorisée de certains utilitaires de ligne de commande comme ls, grep, cmake, git diff, etc, s'il vous plaît noter qu'il n'a pas de relations à GNU Bash.

Quoi qu'il en soit, il existe plusieurs outils pour convertir la sortie colorisée avec des séquences d'échappement ANSI en HTML:

  • aha du paquet du même nom
  • ansi2htmldu module HTML :: FromANSI Perl (non emballé dans le repo Ubuntu, peut être installé à partir du CPAN)
  • ansi2html.shpar pixelb (non emballé, téléchargement depuis git)

Leur utilisation est assez simple: ils lisent des séquences d'échappement de terminal stdinet y mettent du HTML stdout. Mais notez: la plupart des utilitaires ne colorisent pas la sortie si elle ne va pas au terminal. Vous devez les commander pour produire explicitement une sortie colorisée. Par exemple.:

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

xsel -i -b ici copiera le HTML dans le presse-papiers.

Dmitry Alexandrov
la source
Cela ( aha) a fonctionné à merveille; Merci beaucoup!
ShreevatsaR
2
aha - génial! C'est presque parfait pour moi. Pour pouvoir copier du texte formaté, je me suis adapté pour router vers tmp, ouvrir dans le navigateur, puis simplement copier / coller comme pour les autres sites: git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html ... et oui je sais que l'OP voulait le html, mais beaucoup d'entre nous tomberont ici en voulant le formatage en général.
sauge