Цветной текст в консоли Linux #1
Захотел я как-то украсить скрипт, ну чтоб он не был таким скучным, и подумал - в DOS можно было красить консоль, а можно ли в Linux? Можно!
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
Смотреть здесь
tput, на буржуйском. Копия в PDF
Это репост с сайта http://tolik-punkoff.com
Оригинал: https://tolik-punkoff.com/2022/09/25/tsv