Для установки атрибутов отображения информации на экране, таких как: жирный текст, цвет символов, цвет фона и т.п., с давних пор используются ANSI [62] escape-последовательности. Эти последовательности широко используются в пакетных файлах DOS, эти же последовательности используются и в сценариях Bash.
Пример 33-9. "Цветная" адресная книга
Самая простая и, на мой взгляд, самая полезная escape-последовательность — это "жирный текст", \033[1m ... \033[0m. Здесь, комбинация \033 представляет escape-символ, кобинация "[1" — включает вывод жирным текстом, а "[0" — выключает. Символ "m" — завершает каждую из escape-последовательностей.
Простая escape-последовательность, которая управляет атрибутом подчеркивания (в rxvt и aterm).
![]() |
Ключ -e, в команде echo, разрешает интерпретацию escape-последовательностей. |
Другие escape-последовательности, изменяющие атрибуты цвета:
Вывод цветного текста осуществляется по следующему шаблону:. echo -e '\E[COLOR1;COLOR2mКакой либо текст.' Где "\E[" — начало escape-последовательности. Числа "COLOR1" и "COLOR2", разделенные точкой с запятой, задают цвет символов и цвет фона, в соответствии с таблицей цветов, приведенной ниже. (Порядок указания цвета текста и фона не имеет значения, поскольку диапазоны числовых значений цвета для текста и фона не пересекаются). Символ "m" — должен завершать escape-последовательность. Обратите внимание: одиночные кавычки окружают все, что следует за echo -e. |
Числовые значения цвета, приведенные ниже, справедливы для rxvt. Для других эмуляторов они могут несколько отличаться.
Таблица 33-1. Числовые значения цвета в escape-последовательностях
Цвет | Текст | Фон |
---|---|---|
черный | 30 | 40 |
красный | 31 | 41 |
зеленый | 32 | 42 |
желтый | 33 | 43 |
синий | 34 | 44 |
пурпурный | 35 | 45 |
зеленовато-голубой | 36 | 46 |
белый | 37 | 47 |
Пример 33-10. Вывод цветного текста
![]() |
Однако, как обычно, в бочке меда есть ложка дегтя. Escape-последовательности ANSI совершенно не переносимы. Вывод в одном эмуляторе терминала (или в консоли) может разительно отличаться от вывода в другом эмуляторе. "Расцвеченные" сценарии, дающие изумительно красивый вывод текста на одном терминале, могут давать совершенно нечитаемый текст на другом. Это ставит под сомнение практическую ценность "расцвечивания" вывода в сценариях, низводя ее до уровня никчемной "игрушки". |
Moshe Jacobson разработал утилиту color (http://runslinux.net/projects/color), которая значительно упрощает работу с ANSI escape-последовательностями, заменяя, только что обсуждавшиеся, неуклюжие конструкции, логичным и понятным синтаксисом.
[62] ANSI — аббревиатура от American National Standards Institute.
Последние комментарии