Цветной BASH

Cкрипт, написанный на BASH, можно сделать намного красивее и интерактивнее если раскрасить его вывод.

С помощью управляющих ANSI кодов можно менять цвет текста и фона.

Разукрашиваем Shell

Шаблон для написания цветного текста:

echo -e "\e[ЦВЕТmКакой-то Текст\e[0m"
Опция Описание
-e Включить интерпретацию управляющих кодов
\e[ Начинаем изменять цвет
Цветm Код Цвета + ‘m’ в конце
\e[0m Заканчиваем изменять цвет

Примеры:

$ echo -e "\e[31mКрасный Текст\e[0m"
Красный Текст
$ echo -e "\e[42mЗеленый Фон\e[0m"
Зеленый Фон

ANSI — Коды Управления Цветом

В BASH скриптах, для изменения цвета вывода, используются управляющие коды ANSI:

Цвет Кода цвета текста Код цвета фона Пример
Black 30 40
Red 31 41
Green 32 42
Brown 33 43
Blue 34 44
Purple 35 45
Cyan 36 46
Light Gray 37 47

Управляющие коды также позволяют контролировать в каком виде символы выводятся на экран:

ANSI Код Описание
0 Нормальные шрифт
1 Жирный шрифт
4 Подчеркнутый шрифт
5 Мигающие шрифт
7 Инверсия шрифта

Примеры:

$ echo -e "\e[1mЖирный Текст\e[0m"
Жирный Текст
$ echo -e "\e[3mПодчеркнутый Текст\e[0m"
Подчеркнутый Текст

Комбинируя управляющие коды, можно достичь интересных эффектов:

echo -e "\e[Цвет1;Цвет2mSample Text\e[0m"

Цвета немного отличаются если их комбинировать с жирным шрифтом:

Цвет Кода цвета текста Код цвета фона Sample
Dark Gray 1;30 1;40
Light Red 1;31 1;41
Light Green 1;32 1;42
Yellow 1;33 1;43
Light Blue 1;34 1;44
Light Purple 1;35 1;45
Light Cyan 1;36 1;46
White 1;37 1;47

Примеры:

$ echo -e "\e[1;34mСветло-синий Текст\e[0m"
Светло-синий Текст
$ echo -e "\e[1;33;4;44mЖелтый Подчеркнутый Текст на Синем Фоне\e[0m"
Желтый Подчеркнутый Текст на Синем Фоне

One Reply to “Цветной BASH”

  1. Для всех, кто, возможно, попытается применить это для раскраски bash prompt, то бишь PS1: нужно экранировать цвета с помощью [], иначе позиция курсора будет расчитываться неверно, приводя к забавным вещам. Т.е. для красного цвета конструкция \[\e[0;31m\].

Добавить комментарий