Aggiornamento: ho aggiunto un perl
metodo, usando il modulo HTML :: FromANSI da CPAN .. Per installarlo, basta estrarlo in una directory ed eseguire, come root: perl -MCPAN -e 'install HTML::FromANSI'
da quella directory. La caratteristica particolare per soddisfare la tua richiesta è uno script chiamato ansi2html
. È interessante notare che mostra la stessa perdita di colore dopo la sovrapposizione k
nei nomi dei file, così come lo script elisp-shell ... Ecco un esempio di utilizzo:
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
Ecco l'output html. come visto in Firefox:
Ecco un metodo che utilizza uno script emacs elisp-shell ... per esempio, chiamato htmlize ... Non è necessario che Emacs sia in esecuzione.
Inizialmente l'ho testato su uno sfondo nero, ma ho notato che per qualche motivo, uno sfondo bianco non gioca bene con uno dei codici di escape introdotti \e[K
, che sembra essere ERASE_LINE (Cancella l'attuale riga di output del terminale) . Ho aggiunto una riga per rimuovere questo codice di escape. Ora funziona per uno sfondo bianco.
Ecco un esempio dell'output con evidenziazione del colore dal ls
piping a grep
per ulteriore evidenziazione del colore.
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
questa è la elsip-shell
sceneggiatura.
#!/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"))
Ecco un esempio dell'output html, in Firefox ... Se avrò tempo, esaminerò ulteriormente il problema dei codici ANSI sovrapposti. dove il rosso si k
sovrappone ai nomi dei file verdi, ma questo è lì solo a causa di una regex di test scelta in fretta per grep ... (forse questo è qualcosa che \e[K
influenza ...