Как написать stdout в файл с цветами?
Часто (не всегда) стандартный вывод отображается в цветах. Обычно я сохраняю каждый выходной журнал в отдельном файле. Естественно в файле цвета больше не отображаются.
![Console color output example]()
Я хотел бы знать, есть ли способ (в Linux) записать вывод в файл с цветами. Я пытаюсь использовать tee
чтобы записать вывод vagrant в файл, таким образом, я все еще могу видеть вывод (когда он применяется). Я хочу использовать его специально для бродяги (это может измениться в будущем, конечно...)
Ответы
Ответ 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