Bash: copiar / colar colorido

12

Como todo mundo, tenho algumas impressões coloridas no meu bash. Quero manter a sintaxe colorida ao copiar uma extração para um editor de HTML, por exemplo. Existe uma maneira de lidar com isso?

Obrigado.

AketO
fonte

Respostas:

16

Se você está falando sobre a saída colorida de alguns utilitários de linha de comando, como ls, grep, cmake, git diff, etc, por favor nota, que não tem qualquer relação para GNU Bash.

De qualquer forma, existem várias ferramentas para converter saída colorida com seqüências de escape ANSI para HTML:

  • aha do pacote com o mesmo nome
  • ansi2htmlfrom HTML :: FromANSI módulo Perl (não empacotado no repositório Ubuntu, pode ser instalado a partir do CPAN)
  • ansi2html.shpor pixelb (não empacotado, faça o download do git)

O uso de todos eles é bastante simples: eles lêem seqüências de escape terminais stdine inserem HTML stdout. Mas observe: a maioria dos utilitários não coloriza a saída se ela não for para o terminal. Você precisa solicitá-los para produzir saída colorida explicitamente. Por exemplo.:

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

xsel -i -b aqui irá copiar HTML para a área de transferência.

Dmitry Alexandrov
fonte
Isso ( aha) funcionou lindamente; Muito obrigado!
ShreevatsaR
2
aha - brilhante! Isso é quase perfeito para mim. Para poder copiar o texto formatado, adaptei-me ao roteamento para tmp, abra no navegador e depois copie / cole como em outros sites: git -c color.ui=always diff | aha > /tmp/diff.html && firefox /tmp/diff.html ... e sim, eu sei que o OP queria o html, mas muitos de nós tropeçamos aqui querendo a formatação geralmente.
sage