Да. Терминалы ANSI поддерживают коды выхода ANSI . Каждый Control Sequence Introducer
( CSI
) код в следующем формате:
ESC[<<<CODE>>>
Символ Ascii 27
( ESC
символ) или 1b
в шестнадцатеричном формате, сопровождаемый левой квадратной скобкой, а затем буквой, обозначающей действие, которое будет использоваться.
Обратите внимание, что список ;
разделенных параметров может быть предоставлен непосредственно перед <<<CODE>>>
параметром.
Теперь цвета используют подмножество CSI
кодов, Select Graphic Rendition
коды. Это в форме:
ESC[<<<SGR>>>m
SGR
Код передается в качестве параметра CSI
. К вашему вопросу относятся SGR
коды 30-49. Коды 30-39 устанавливают цвет переднего плана. Коды 40-49 устанавливают цвет фона.
30 - Foreground Black
31 - Foreground Red
32 - Foreground Green
33 - Foreground Yellow
34 - Foreground Blue
35 - Foreground Magenta
36 - Foreground Cyan
37 - Foreground White
40 - Background Black
41 - Background Red
42 - Background Green
43 - Background Yellow
44 - Background Blue
45 - Background Magenta
46 - Background Cyan
47 - Background White
Коды 38 и 48 являются специальными кодами. Это те, которые позволяют вам использовать значения RGB. Формат для них:
ESC[38;2;<r>;<g>;<b>m (Foreground)
ESC[48;2;<r>;<g>;<b>m (Background)
Примечание: альтернативное использование включает \x1b[<3 or 4>8;5;<web safe color index>m
. При таком использовании существует совершенно другая цветовая кодировка. Смотрите ссылку в верхней части этого ответа для получения дополнительной информации.
Коды 39 и 49 устанавливают цвета по умолчанию и цвет фона на их значения по умолчанию, которые определяются для каждого терминала.
На практике цвета 30-37 и 40-47 немного отличаются от того, что написано на их этикетках.
0 - Black
1 - Darker Red
2 - Darker Green
3 - Dark/Yellow or Brown (varies between terminals)
4 - Dark Blue
5 - Dark Magenta
6 - Dark Cyan
7 - Light Grey
Для получения светлых цветов, можно использовать SGI для полужирного, 1
. Жирный вводит в заблуждение имя. Это не делает шрифт жирным. Это на самом деле увеличивает яркость текста. При жирном нанесении цвета становятся:
0 - Dark Grey
1 - Bright Red
2 - Bright Green
3 - Bright Yellow
4 - Bright Blue
5 - Bright Magenta
6 - Bright Cyan
7 - White
Примечание: последние два блока чисел цветов относятся как к переднему, так и к фоновому ( <index> + (30 or 40)
).
Чтобы удалить все стили (вернуться к стандартному / нормальному режиму), используйте SGR
0.
CSI
коды не все графические. Например, ESC[2J
очистит ваш терминал. ESC[<y>;<x>H
устанавливает позицию курсора (индексируется 1). Смотрите статью в Википедии для получения дополнительной информации.
Примечание: чтобы проверить это, используйте echo -e
или printf
.