Толик Панков
hex_laden
............ .................. ................
October 2025
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31

Толик Панков [userpic]
Цветной текст в консоли Linux #1

Преамбула


Захотел я как-то украсить скрипт, ну чтоб он не был таким скучным, и подумал - в DOS можно было красить консоль, а можно ли в Linux? Можно!

Красим с помощью tput


tput - команда, в основном предназначающаяся для управления консольным курсором, но покрасить она тоже может, хоть и довольно хреново.

Общий синтаксис:

tput <команда> <параметры>

В нашем случае, интересуют команды, изменяющие цвет или стиль текста.

Для удобства сведу их в таблицу:

Команда tputДействие
boldЖирный текст, после вызова команды
smulНачало подчеркнутого текста
rmulКонец подчеркнутого текста
revРеверс текста и фона, т.е. они меняются местами
blinkМигающий текст (не на одной консоли не сработал)
invisНевидимый текст (у меня не сработало)
smsoНекий "выдающийся" (standout) режим, отличий при выводе не заметил
rmsoОтключить "выдающийся" режим
setaf <код_цвета>Установить цвет текста
setab <код_цвета>Установить цвет фона
sgr0Сбросить настройки терминала к значениям по умолчанию.


Коды цвета

tput, на самом деле, плох для окраски текста консоли, но зато хорош в синтаксисе. Не надо сочинять дополнительных функций для ESC-последовательностей (о них в следующей заметке), но он поддерживает только 7 основных цветов, а на некоторых консолях не срабатывает и белый цвет. Вот таблица цветов для текста и фона (значения одинаковые и для того, и для другого):
Код цветаЦвет
0Черный (Black)
1Красный (Red)
2Зеленый (Green)
3Желтый (Yellow)
4Голубой (Blue)
5Фиолетовый (Magenta)
6Светло-голубой (Cyan)
7Белый (White), у меня почему-то не сработал.
8Не используется
9Возврат к цвету по умолчанию


Как использовать


Я написал тестовый скрипт, где последовательно перебираю цвета текста и цвета фона:

tput setaf <код_цвета>, для текста
tput setab <код_цвета>, для фона
потом echo -n "некий текст", где некий текст - наименование цветов в массиве, см. исходник.

А потом вызываю tput sgr0, чтобы сбросить консоль.

Стили текста:

echo "Text style:"
tput bold; echo "Bold"; tput sgr0
tput smul; echo "Underlined"; tput rmul
tput rev; echo "Reversed"; tput sgr0
tput blink; echo "Blinking"; tput sgr0
tput invis; echo "Invisible"; tput sgr0
tput smso; echo "Standout"; tput rmso

tput sgr0


Что получилось




Исходник на GitHub


Смотреть здесь

Источник


tput, на буржуйском. Копия в PDF

Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/09/25/tsvetnoj-tekst-v-konsoli-linux-1/