Цветной вывод в консоли

2161

Вот не поверите, но в последнее время устойчивая ассоциативная связка «Linux=консоль» все реже всплывает в моем подсознании. Помозговав, я пришел к выводу, что во многом это связано с тем что графические оболочки Линукс, а вслет за ними и программы с графическим интерфейсом, вырасли настолько что к командной строке я обращаюсь только в случае крайней необходимости. Но любовь к консоли неистребима . Особенно к красивой, фантастической консоли. Так же как разноцветные лего биониклы вызывают восторг у моего сына, так же и разноцветная консоль по прежнему радует меня. Поэтому, добрых советов по методикам раскраски консоли много никогда не бывает. Вот и сегодня нашел на Хабре полезное HOWTO как настроить цветовое оформление консольного вывода. Ниже, под катом, я его привожу полностью. Большое спасибо автору Flexoid.

Кратко о том, как сделать для своей консольной программы или скрипта цветной вывод текста, а также дополнить его другими элементами оформления. Собственно, назначить можно цвет текста, цвет фона под ним, сделать текст жирным, подчеркнутым, невидимым и даже мигающим.

Шаблон для использования в современных командных оболочках и языках программирования таков: \x1b[m. Это ESCAPE-последовательность, где \x1b обозначает символ ESC (десятичный ASCII код 27), а вместо «…» подставляются значения из таблицы, приведенной ниже, причем они могут комбинироваться, тогда нужно их перечислить через точку с запятой.

атрибуты
0 нормальный режим
1 жирный
4 подчеркнутый
5 мигающий
7 инвертированные цвета
8 невидимый
цвет текста
30 черный
31 красный
32 зеленый
33 желтый
34 синий
35 пурпурный
36 голубой
37 белый
цвет фона
40 черный
41 красный
42 зеленый
43 желтый
44 синий
45 пурпурный
46 голубой
47 белый

Теперь несколько примеров. Все это можно опробовать, введя в консольном окне echo -e «текст примера».

Ввод Результат
\x1b[31mTest\x1b[0m image
\x1b[37;43mTest\x1b[0m image
\x1b[4;35mTest\x1b[0m image

Обратите внимание, что во всех трех случаях после слова Test идет последовательность \x1b[0m, которая просто сбрасывает стиль оформления на стандартный.

Комплексный пример использования:

\x1b[1;31mСтрока\x1b[0m с
\x1b[4;35;42mразными\x1b[0m\x1b[34;45mстилями\x1b[0m
\x1b[1;33m
оформления\x1b[0m
image

Хорошая раскраска вывода часто значительно облегчает восприятие информации. Так что пробуйте и экспериментируйте.

P.S. Также об этом и некотором другом можно прочитать в man console_codes.