Обновление: я добавил perl
метод, используя модуль HTML :: FromANSI из CPAN . Чтобы установить его, просто извлеките его в каталог и запустите как root: perl -MCPAN -e 'install HTML::FromANSI'
из этого каталога. Особая функция для вашего запроса - это скрипт ansi2html
. Интересно, что он показывает ту же потерю цвета после наложения k
в именах файлов, как и сценарий elisp-shell ... Вот пример использования:
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" |
ansi2html >/tmp/example.html
firefox /tmp/example.html
Вот вывод html. как видно в Firefox:
Вот метод, использующий сценарий emacs- elisp-shell ... для примера, называемый htmlize ... Emacs запускать не нужно.
Первоначально я тестировал его на черном фоне, но заметил, что по какой-то причине белый фон не очень хорошо работает с одним из представленных Escape-кодов \e[K
, который выглядит как ERASE_LINE ( стереть текущую строку вывода терминала) . Я добавил строку для удаления этого Escape Code. Теперь он работает на белом фоне.
Вот пример вывода цвета с выделением из ls
конвейера grep
для дальнейшей цветовой подсветки.
ls -l --color=always /bin/*k* |
grep --color=always "k\|x\|2010" >/tmp/example
htmlize /tmp/example
firefox /tmp/example.html
это elsip-shell
сценарий
#!/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"))
Вот пример вывода html в Firefox ... Если у меня будет время, я рассмотрю проблему с наложением кодов ANSI. где красные k
s перекрывают зеленые имена файлов, но это только там из-за спешно выбранного тестового регулярного выражения для grep ... (возможно, это что-то \e[K
влияет ...