Есть инструменты, обеспечивающие цветной вывод:
dwdiff -c File1 File2 # word level diff
grep --color=always # we all know this guy
...
Вопрос в том, как преобразовать их цветной вывод произвольной программы в цветной HTML-файл?
Другие выходные форматы также могут подойти (LaTeX был бы отличным). Я думаю, что HTML является хорошей отправной точкой, так как его легко конвертировать в другие форматы.
(Любопытно, как сохранить цветовые коды терминала, пожалуйста, следуйте ответу:
https://unix.stackexchange.com/a/10832/9689
... | unbuffer command_with_colours arg1 arg2 | ...
- небуферный инструмент является частью ожидаемого )
Ответы:
Ответ на этот вопрос , вероятно, то, что вы хотите.
Он ссылается на эти инструменты, которые выполняют преобразование, которое вы ищете:
Perl пакет HTML :: FromANSI
ага , программа на языке C ( github repo )
источник
aha
также доступна в Ubuntu:sudo apt install aha
. Но обратите внимание, что некоторые команды будут подавлять цвета, когда вывод представляет собой канал. Поэтому при отправке вывода в aha вам может понадобиться добавить опции в ваши команды. Дляls
илиgrep
это будет--color=always
.Или просто скрипт
https://github.com/pixelb/scripts/blob/master/scripts/ansi2html.sh
Подробнее об этом скрипте http://pablomarin-garcia.blogspot.com/2011/04/converting-ansi-to-html-how-to-convert.html
источник
Вы можете попробовать
vim
с плагином AnsiEsc.vim просмотреть цвета ANSI через escape-коды, а затем перенаправить на стандартный выводvim -
(убедитесь, что вы активировали:syntax on
). Затем преобразовать файл в HTML бойкости команды::TOhtml
. Сгенерированный файл HTML должен иметь цветной вывод.Чтобы преобразовать исходный код неинтерактивно в HTML, попробуйте следующую команду:
Источник:
:help g:html_no_progress
(часть:help TOhtml
).Примечание: вы можете использовать
-
вместоmyfile.c
, для преобразования кода из стандартного ввода.источник
:help TOhtml
или:help g:html_no_progress
.Вы можете использовать Vim. Это часть скрипта, который я использую для преобразования вывода diff в HTML.
После этого я запускаю sed, чтобы изменить CSS и заголовок так, чтобы он был именно таким, каким я его хочу.
* Изменить: я должен был упомянуть, что для получения цвета, вам нужно включить подсветку синтаксиса. Я делаю это в моем .vimrc, но если вы хотите добавить его сюда, это будет просто другая строка, как
источник
ansi2html , на pypi.
Можно получить неимоверное количество удовольствия от передачи обычной оболочки через lolcat, а затем через ansi2html. Что-то вроде:
источник
lolcat
одну идею, но я слишком занят, смеясь.ansi2html
двоичный исполняемый файлОбновление: я добавил
perl
метод, используя модуль HTML :: FromANSI из CPAN . Чтобы установить его, просто извлеките его в каталог и запустите как root:perl -MCPAN -e 'install HTML::FromANSI'
из этого каталога. Особая функция для вашего запроса - это скриптansi2html
. Интересно, что он показывает ту же потерю цвета после наложенияk
в именах файлов, как и сценарий elisp-shell ... Вот пример использования:Вот вывод html. как видно в Firefox:
Вот метод, использующий сценарий emacs- elisp-shell ... для примера, называемый htmlize ... Emacs запускать не нужно.
Первоначально я тестировал его на черном фоне, но заметил, что по какой-то причине белый фон не очень хорошо работает с одним из представленных Escape-кодов
\e[K
, который выглядит как ERASE_LINE ( стереть текущую строку вывода терминала) . Я добавил строку для удаления этого Escape Code. Теперь он работает на белом фоне.Вот пример вывода цвета с выделением из
ls
конвейераgrep
для дальнейшей цветовой подсветки.это
elsip-shell
сценарийВот пример вывода html в Firefox ... Если у меня будет время, я рассмотрю проблему с наложением кодов ANSI. где красные
k
s перекрывают зеленые имена файлов, но это только там из-за спешно выбранного тестового регулярного выражения для grep ... (возможно, это что-то\e[K
влияет ...источник
Для тех, у кого есть команда, написанная в предположении, что вывод по конвейеру никогда не будет иметь цвет (например, некоторые тестовые среды), вам может оказаться полезным использовать утилиту сценария, чтобы сначала сохранить вывод ANSI. Это может быть затем передано в aha или в другие упомянутые утилиты.
источник
Это всего лишь продолжение решения @ user17591 - скриптов vim :
чмод это и
Использование:
htmlvim file
(для создания файла .html)источник