📜 Добавление цветов в скрипты Bash

by itisgood

Используя коды вывода цвета ANSI, мы можем добавить цвет в выходные строки.

Стандарт ANSI определяет определенные цветовые коды;

Цвет
Код переднего плана
Фоновый код
Черный 30 40
Красный 31 41
Зеленый 32 42
Желтый 33 43
Синий 34 44
Пурпурный 35 45
Бирюзовый 36 46
Светло серый 37 47
Серый 90 100
Светло красный 91 101
Светло зеленый 92 102
Светло желтый 93 103
Светло синий 94 104
Светло пурпурный 95 105
Светло бирюзовый 96 106
Белый 97 107

Чтобы изменить цвет текста, нам нужен код переднего плана.

Есть также несколько других нецветных специальных кодов, которые относятся к нашей теме:

КОД Описание
0 Нормальный
1 Жирный текст
2 Тусклый текст
3 Курсив
4 Подчеркнутый текст

Команда echo выводит текст

. Нам нужно сказать, что мы работаем со специальными кодами ANSI, а не только с обычными символами.

Это может быть достигнуто путем добавления \e в начале, чтобы сформировать escape-последовательность.

 escape последовательность для указания цветовых кодов: \e [COLORm (COLOR представляет наш цветовой код в этом случае).

По умолчанию echo не поддерживает escape-последовательности.

Нам нужно добавить опцию -e, чтобы включить ее интерпретацию.

Чтобы напечатать красный текст, следовательно, мы могли бы использовать:
echo -e "\e[32Red text\e[0m"
\e[0m означает, что мы используем специальный код 0, чтобы вернуть цвет текста в нормальнй.

Без этого весь другой текст, который вы выведете после этого, будет красным.

Это работает, но было бы более читабельно, если бы мы хранили цветовые коды в переменных и использовали их.

RED="\e[31m"
ENDCOLOR="\e[0m"

echo -e "${RED}Red text${ENDCOLOR}"

Собрав все это вместе, мы могли бы получить такой скрип

#! /usr/bin/env bash

RED="\e[31m"
GREEN="\e[32m"
ENDCOLOR="\e[0m"

echo -e "${RED}This is some red text, ${ENDCOLOR}"
echo -e "${GREEN}And this is some green text${ENDCOLOR}"

Demoing this

Мы можем комбинировать escape-коды, чтобы получить более причудливый вывод.
#! /usr/bin/env bash

RED="31"
GREEN="32"
BOLDGREEN="\e[1;${GREEN}m"
ITALICRED="\e[3;${RED}m"
ENDCOLOR="\e[0m"

echo -e "${BOLDGREEN}Behold! Bold, green text.${ENDCOLOR}"
echo -e "${ITALICRED}Italian italics${ENDCOLOR}"

Another one

Вы можете использовать их различными способами, чтобы сделать ваши скрипты менее монотонными.
Комбинации на ваше усмотрение.

You may also like

Leave a Comment