Update: Ich habe eine perl
Methode hinzugefügt , die das Modul HTML :: FromANSI aus CPAN verwendet . Um es zu installieren, extrahieren Sie es einfach in ein Verzeichnis und führen es als root aus: perl -MCPAN -e 'install HTML::FromANSI'
aus diesem Verzeichnis. Die Besonderheit, die zu Ihrer Anfrage passt, ist ein Skript namens ansi2html
. Interessanterweise zeigt es nach der Überlagerung k
in den Dateinamen den gleichen Farbverlust wie das Elisp-Shell- Skript ... Hier ein Anwendungsbeispiel:
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
Hier ist die HTML-Ausgabe. wie in Firefox gesehen:
Hier ist eine Methode, die ein Emacs- Elisp-Shell-Skript verwendet ... für das Beispiel mit dem Namen htmlize ... Emacs muss nicht ausgeführt werden.
Ich habe es ursprünglich auf einem schwarzen Hintergrund getestet, aber ich habe festgestellt, dass aus irgendeinem Grund ein weißer Hintergrund nicht gut mit einem der eingeführten Escape-Codes zusammenpasst \e[K
, der ERASE_LINE (Erase the current line of terminal output) zu sein scheint . Ich habe eine Zeile hinzugefügt, um diesen Escape-Code zu entfernen. Es funktioniert jetzt für einen weißen Hintergrund.
Hier ist ein Beispiel für eine Ausgabe mit farbigen Hervorhebungen ls
, die grep
zur weiteren farbigen Hervorhebung weitergeleitet wird.
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
Das ist das elsip-shell
Drehbuch.
#!/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"))
Hier ist ein Beispiel für die HTML-Ausgabe in Firefox ... Wenn ich Zeit habe, werde ich das Problem der überlagernden ANSI-Codes genauer untersuchen. wo die roten k
s die grünen dateinamen überlappen, aber das liegt nur an einem hastig gewählten test regex für grep ... (vielleicht hat das etwas \e[K
einfluss ...