Показать файл с цветами ANSI

Показать файл с цветами ANSI

У меня есть файл с цветами ANSI.

тест.txt:
\e[0;31mExample\e[0m

Я хотел бы отобразить содержимое этого файла в терминале, как catэто делается, но я хотел бы также отобразить цвета.

решение1

Я искал решение именно этого вопроса bash. Я чуть не пропустил комментарий @Thomas Dickey, который предоставил мне самое элегантное решение.

echo -e $(cat test.txt)

Некоторые вещи, которые мне не подошли (судя по всему, вы не можете передавать данные на эхо)

cat test.txt | echo -e

или

less -R test.txt

Другая проблема, с которой я столкнулся, заключалась в том, что echo -e не печатал нормально новые строки и смежные пробелы в файле. Чтобы напечатать их, я использовал следующее.

echo -ne $(cat test.txt | sed  's/$/\\n/' | sed 's/ /\\a /g')

Это работает для файла test.txt, содержащего

\e[0;31mExa         mple\e[0m
\e[0;31mExample line2\e[0m

решение2

Если вы не видите цвета на catэлементах управления, вероятно, они повреждены.

Некоторые инструменты удаляют управляющие символы, но оставляют их в конце.

Сравнивать:

 echo -e "\e[0;31mExample\e[0m foo"

к

 echo -e "[0;31mExample[0m foo" 

Вы можете восстановить управляющую последовательность из того, что осталось, хотя это не гарантирует полной безопасности, поскольку используемое вами регулярное выражение может случайно вставить непреднамеренные последовательности символов и т. д. Но, например:

echo -e "[0;31mExample[0m foo" | sed "s:\[\([0-9]*[;m]\):^[[\1:g"

восстановит цвет строки примера.

решение3

Существует пакет, содержащий исполняемый файл, который делает это специально:

ttyrec

Вы можете установить его на производные от Debian установки Linux с помощью

sudo apt install ttyrec

или на RedHat с

sudo yum install ttyrec

Команда для правильного воспроизведения файла выполняется с помощью

ttyplay <filename>

Также ознакомьтесь с пакетом tty2gif, который преобразует подобные файлы в gif.

решение4

Это должно работать по умолчанию. Например, если я делаю ls --color=always > /tmp/aи затем cat /tmp/a, я вижу цвета. Проверка с odподтверждает, что файл использует цвета ANSI.

Поэтому я думаю, вам следует проверить, поддерживает ли ваш терминал цвета ANSI (и включены ли они).

Связанный контент