2010-01-09 3 views
11

Есть ли способ конвертировать вывод bash в html? например, если у меня был некоторый раскрашенный вывод в bash (что-то вроде htop), как я могу преобразовать его в html-теги ... (что-то вроде этого: <p style="color: red">some text</p>)linux shell output to html

+1

Как выглядят результаты преобразования? Здесь нет узнаваемой структуры, которая может быть преобразована в теги HTML. Что именно вы пытаетесь достичь? –

+0

Ваши данные, похоже, полны управляющих последовательностей ANSI. Это намеренно? – 2010-01-09 12:09:48

+2

Связанный: http://stackoverflow.com/questions/245121/a-library-to-convert-ansi-escapes-terminal-formatting-color-codes-to-html – Tobu

ответ

19

Там в ansifilter плюс некоторые инструменты, такие как highlight, будут создавать раскрашенные html из обычного текста, такого как исходные файлы.

Оба доступны here.

+3

Это именно то, что я хочу ... ansifilter -i file -H -o file.html – linker

9

Да, вам нужно передать результат с помощью инструмента ansi2html.

3

Без какой-либо красивой печати самое простое, что вы всегда можете сделать, - это избежать всего, что нужно ускользнуть, и обернуть основную оболочку HTML (должно быть допустимо минимальное HTML5). Например, задержите fastesc: http://raa.ruby-lang.org/project/fastesc/ и заверните его в оболочку HTML.

Если вы хотите сохранить магию ANSI, то вам нужно преобразовать, что в HTML, возможно, с http://ansi-sys.rubyforge.org/

А потом сделать что-то вроде этого, в зависимости от ваших потребностей:

require 'ansisys' 


def ansi_escape(string) 
    terminal = AnsiSys::Terminal.new 
    terminal.echo(string) 
    terminal.render 
end 

def to_html(string) 
    %Q{ <!DOCTYPE html> 
     <title>Converted to html</title> 
     <pre> 
     #{ansi_escape(string)} 
     </pre> 
    } 
end 
+0

+1 Это тоже мой ответ ... – linker

+0

Это, вероятно, все еще нуждается в экранировании HTML. – nes1983