Existem ferramentas que fornecem saída colorida:
dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
A questão é: Como converter sua saída colorida de programa arbitrário em arquivo html colorido?
Outros formatos de saída também podem ser adequados (o LaTeX seria ótimo). Eu acho que o html é um bom ponto de partida, pois é fácil convertê-lo para outros formatos.
(Para saber como manter os códigos de cores dos terminais, siga a resposta:
https://unix.stackexchange.com/a/10832/9689
... | unbuffer command_with_colours arg1 arg2 | ...
- o desbotador da ferramenta faz parte do esperado )
Respostas:
A resposta a esta pergunta é provavelmente o que você deseja.
Ele vincula essas ferramentas, que fazem a conversão que você está procurando:
Pacote Perl HTML :: FromANSI
aha , um programa em linguagem C ( repositório github )
fonte
aha
Também está disponível no Ubuntu:sudo apt install aha
. Mas observe que alguns comandos suprimirão as cores quando a saída for um pipe. Portanto, ao enviar a saída para aha, talvez seja necessário adicionar opções aos seus comandos. Parals
ougrep
seria--color=always
.Ou apenas um script de shell
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Mais detalhes desse script http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
fonte
Você pode tentar
vim
com o plug-in AnsiEsc.vim para visualizar cores ANSI através de códigos de escape e, em seguida, redirecionar para a saída padrão paravim -
(verifique se você ativou:syntax on
). Em seguida, converter o arquivo para HTML pelo comando vim::TOhtml
. O arquivo HTML gerado deve ter saída colorida.Para converter o código-fonte de maneira não interativa em html, tente o seguinte comando:
Fonte:
:help g:html_no_progress
(parte de:help TOhtml
).Nota: Você pode usar, em
-
vez demyfile.c
, para converter o código da entrada padrão.fonte
:help TOhtml
ou:help g:html_no_progress
.Você pode usar o vim. Isso faz parte de um script que eu uso para converter a saída diff em HTML.
Depois disso, corro sed para alterar o CSS e o título para que sejam exatamente o que quero que sejam.
* Editar: eu deveria ter mencionado que, para obter cores, você precisa ter o destaque de sintaxe ativado. Eu faço isso no meu .vimrc, mas se você quiser adicioná-lo aqui, seria apenas outra linha como
fonte
ansi2html , em pypi.
Pode-se obter uma quantidade imoderada de prazer ao canalizar a saída regular do shell pelo lolcat e depois pelo ansi2html. Algo como:
fonte
lolcat
ideia, mas estou muito ocupado rindo.ansi2html
binário executávelAtualização: eu adicionei um
perl
método, usando o módulo HTML :: FromANSI do CPAN . Para instalá-lo, basta extraí-lo para um diretório e executar como root:perl -MCPAN -e 'install HTML::FromANSI'
desse diretório. O recurso específico para atender à sua solicitação é um script chamadoansi2html
. Curiosamente, ele mostra a mesma perda de cor após a sobreposiçãok
nos nomes dos arquivos, assim como o script elisp-shell ... Aqui está um exemplo de uso:Aqui está a saída html. como visto no Firefox:
Aqui está um método usando um script emacs elisp-shell ... por exemplo, chamado htmlize ... O Emacs não precisa estar em execução.
Eu o testei originalmente em um fundo preto, mas notei que, por algum motivo, um fundo branco não funciona bem com um dos códigos de escape introduzidos
\e[K
, que parecem ser ERASE_LINE (apague a linha atual de saída do terminal) . Adicionei uma linha para remover este código de escape. Agora funciona para um fundo branco.Aqui está um exemplo de saída destacada em cores de
ls
ser canalizada paragrep
realçar mais cores.esse é o
elsip-shell
script.Aqui está um exemplo da saída html, no Firefox ... Se eu tiver tempo, analisarei mais detalhadamente a questão dos códigos ANSI sobrepostos. onde o vermelho se
k
sobrepõe aos nomes de arquivos verdes, mas isso só ocorre por causa de um regex de teste escolhido apressadamente para grep ... (talvez isso seja algo que\e[K
influencia ...fonte
Para aqueles que possuem um comando que está escrito no pressuposto de que a saída canalizada nunca terá cores (por exemplo, algumas estruturas de teste), pode ser útil usar o utilitário de script para salvar primeiro a saída ansi. Isso pode ser enviado ahaha ou aos outros utilitários mencionados.
fonte
Este é apenas um acompanhamento da solução @ user17591 - script vim :
chmod e
Uso:
htmlvim file
(para produzir file.html)fonte