Mise à 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 superposition k
dans les noms de fichiers que le script elisp-shell ... Voici un exemple d'utilisation:
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
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 lecture grep
pour plus de couleur.
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
c'est le elsip-shell
script.
#!/bin/sh
":"; exec /usr/bin/emacs -Q --script "$0" -- "$@" # -*-emacs-lisp-*-
(require 'ansi-color) (require 'htmlize)
(find-file (setq path-in (cadr argv)))
(ansi-color-apply-on-region (point-min) (point-max))
(switch-to-buffer (buffer-name (htmlize-buffer)))
(write-file (concat path-in ".html"))
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é ...