Так. Термінали ANSI підтримують коди Escape Escape . Кожен 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-індексовано). Додаткову інформацію див. У статті wikipedia.
Примітка: щоб перевірити їх, використовуйте echo -e
або printf
.