Il existe des outils fournissant une sortie colorée:
dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
La question qui se pose est la suivante: comment convertir leur sortie colorée de programme arbitraire en fichier html coloré?
D'autres formats de sortie pourraient également convenir (LaTeX serait génial). Je pense que le html est un bon point de départ, car il est facile de le convertir en un autre format.
(Pour savoir comment conserver les codes de couleur du terminal, veuillez suivre la réponse:
https://unix.stackexchange.com/a/10832/9689
... | unbuffer command_with_colours arg1 arg2 | ...
- l'outil d' annulation de la mémoire tampon fait partie des attentes )
Réponses:
La réponse à cette question est probablement ce que vous voulez.
Il est lié à ces outils, qui font la conversion que vous recherchez:
Paquet Perl HTML :: FromANSI
aha , un programme en langage C ( github repo )
la source
aha
est également disponible dans Ubuntu:sudo apt install aha
. Notez toutefois que certaines commandes suppriment les couleurs lorsque la sortie est un tuyau. Ainsi, lors de l'envoi d'une sortie à aha, vous devrez peut-être ajouter des options à vos commandes. Pourls
ougrep
ce serait--color=always
.Ou juste un script shell
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Plus de détails sur ce script http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
la source
Vous pouvez essayer
vim
avec le plug- in AnsiEsc.vim de visualiser les couleurs ANSI via des codes d'échappement, puis de les rediriger vers la sortie standard versvim -
(assurez-vous que vous avez activé:syntax on
). Ensuite , convertir le fichier au format HTML en commande vim::TOhtml
. Le fichier HTML généré doit avoir une sortie en couleur.Pour convertir le code source en HTML de manière non interactive, essayez la commande suivante:
Source:
:help g:html_no_progress
(partie de:help TOhtml
).Remarque: Vous pouvez utiliser à la
-
place demyfile.c
, pour convertir le code à partir de l'entrée standard.la source
:help TOhtml
ou:help g:html_no_progress
.Vous pouvez utiliser vim. Cela fait partie d'un script que j'utilise pour convertir les sorties diff en HTML.
Après cela, je lance sed pour changer le CSS et le titre pour qu'ils soient exactement ce que je veux qu'ils soient.
* Edit: J'aurais dû mentionner que pour obtenir de la couleur, la surbrillance de la syntaxe doit être activée. Je le fais dans mon .vimrc, mais si vous vouliez l’ajouter ici, ce serait juste une autre ligne comme
la source
ansi2html , sur pypi.
On peut obtenir un plaisir immodéré en diffusant lolcat puis en ansi2html. Quelque chose comme:
la source
lolcat
idée seule, mais je suis trop occupé à rire.ansi2html
exécutable binaire incompatibleMise à jour: j'ai ajouté une
perl
méthode en utilisant le module HTML :: FromANSI de CPAN .. Pour l'installer, extrayez-la dans un répertoire et exécutez-la en tant que root: àperl -MCPAN -e 'install HTML::FromANSI'
partir de ce répertoire. La fonctionnalité qui convient à votre demande est un script appeléansi2html
. Fait intéressant, il présente la même perte de couleur après la superpositionk
dans les noms de fichiers que le script elisp-shell ... Voici un exemple d'utilisation:Voici la sortie HTML. comme vu dans Firefox:
Voici une méthode utilisant un script emacs elisp-shell ... pour l'exemple, appelé htmlize ... Emacs n'a pas besoin d'être exécuté.
Je l’avais initialement testé sur un fond noir, mais j’ai remarqué que, pour une raison quelconque, un fond blanc ne fonctionnait pas bien avec l’un des codes d’évasion introduits
\e[K
, qui semble être ERASE_LINE (efface la ligne actuelle de sortie du terminal) . J'ai ajouté une ligne pour supprimer ce code d'échappement. Cela fonctionne maintenant pour un fond blanc.Voici un exemple de couleur mise en surbrillance depuis la sortie
ls
en lecturegrep
pour plus de couleur.c'est le
elsip-shell
script.Voici un exemple de la sortie html, dans Firefox ... Si le temps me le permet, j'examinerai plus en détail le problème des codes ANSI superposés. où les
k
noms de fichiers verts chevauchent les noms de fichiers verts, mais ce n’est là qu’à cause d’un regex de test choisi à la hâte pour grep ... (peut-être que quelque chose a\e[K
influencé ...la source
Pour ceux qui ont une commande écrite en partant du principe que la sortie redirigée n’aura jamais de couleur (par exemple, certains frameworks de test), il peut être utile d’utiliser l’utilitaire de script pour enregistrer d’abord la sortie ansi. Cela peut ensuite être poussé vers aha ou les autres utilitaires mentionnés.
la source
Ceci n'est qu'un suivi de la solution @ user17591 - vim scripting :
chmod et
Utilisation:
htmlvim file
(pour produire file.html)la source