Используя коды вывода цвета 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}"
![]()


