Так. Термінали 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)).
Щоб видалити всі стилі (назад до стандартного / звичайного режиму), використовуйте SGR0.
CSIкоди не всі графічні. Наприклад, ESC[2Jочистить ваш термінал. ESC[<y>;<x>Hвстановлює положення курсору (1-індексовано). Додаткову інформацію див. У статті wikipedia.
Примітка: щоб перевірити їх, використовуйте echo -eабо printf.