Подтвердить что ты не робот

Как написать stdout в файл с цветами?

Часто (не всегда) стандартный вывод отображается в цветах. Обычно я сохраняю каждый выходной журнал в отдельном файле. Естественно в файле цвета больше не отображаются.

Console color output example

Я хотел бы знать, есть ли способ (в Linux) записать вывод в файл с цветами. Я пытаюсь использовать tee чтобы записать вывод vagrant в файл, таким образом, я все еще могу видеть вывод (когда он применяется). Я хочу использовать его специально для бродяги (это может измениться в будущем, конечно...)

4b9b3361

Ответ 1

Так как многие программы будут выводить только цветовые последовательности, если их stdout является терминалом, общее решение этой проблемы требует обмана, полагая, что труба, которую они пишут, является терминалом. Это возможно с помощью команды script из bsdutils:

script -q -c "vagrant up" filename.txt

Это будет записывать вывод из vagrant up в filename.txt(и терминал). Если эхо не желательно,

script -q -c "vagrant up" filename > /dev/null

будет записывать его только в файл.

Ответ 2

Вы можете сохранить последовательности ANSI, которые окрашивают ваш вывод в файл:

echo a | grep --color=always . > colour.txt
cat colour.txt

Однако некоторые программы имеют тенденцию не использовать, если их вывод не идет на терминал (поэтому мне пришлось использовать --color-always с grep).

Ответ 3

Вы также можете покрасить свой вывод с помощью эха с разными цветами и сохранить цветной вывод в файле. Пример

echo -e '\E[37;44m'"Hello World" > my_file

Также вам нужно будет познакомиться с цветовыми кодами терминалов

Использование tee

< command line > |tee -a 'my_colour_file'

Откройте файл в cat

cat 'my_colour_file'

Использование именованного канала также может работать для перенаправления всего вывода из канала с цветами в другой файл

например

Создайте именованный канал

mkfifo pipe.fifo

каждая командная строка перенаправляет его на трубу следующим образом

<command line> > pipe.fifo

В другом терминале перенаправить все сообщения из канала в файл

cat pipe.fifo > 'my_log_file_with_colours'

откройте файл с кошкой и посмотрите ожидаемые результаты.

Ответ 4

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

Самый простой способ экспортировать красочные данные терминала в html файл,

Команды для его использования:

ls --color=always | ansi2html.sh --palette=solarized > ~/Desktop/ls.html
  • Все нужно, чтобы отправить вывод с использованием канала, а затем вывести stdout в простой файл html

Ответ 5

В Ubuntu вы можете установить пакет bsdutils для вывода в текстовый файл с цветовыми кодами ANSI:

script -q -c "ls --color=always" /tmp/t

Установите kbtin для генерации чистого HTML- файла:

ls --color=always | ansi2html > /tmp/t.html

Установите aha и wkhtmltopdf для создания хорошего PDF:

ls --color=always | aha | wkhtmltopdf - /tmp/t.pdf

Используйте любого из указанных выше с tee для вывода также на консоли или сохранить копию в другом файл. Пример:

ls --color=always | tee /dev/stderr | aha | wkhtmltopdf - /tmp/test.pdf