Используя коды вывода цвета 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"
Без этого весь другой текст, который вы выведете после этого, будет красным.
Это работает, но было бы более читабельно, если бы мы хранили цветовые коды в переменных и использовали их.
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}"
#! /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}"