Я только что узнал, как использовать escape-код vt100, чтобы изменить цвет фона и текста в терминале (\033[30m
а также\033[40m
). Мне было интересно, есть ли способ использовать шестнадцатеричные цветовые коды вместо того, чтобы ограничиваться 8 цветами, которые вы получаете за использование 30 — 37 или 40 — 47. Что-то вроде:\033[#48FF1Fm
,
Я не удивлюсь, если это будет невозможно, но я подумал, что стоит спросить.
VT-100 — старый терминал, и я был удивлен, что у него были коды выхода для цветов!
Смотрите также это переполнение стека Список цветовых escape-последовательностей ANSI у которого есть несколько хороших ответов.
Следующий раздел из Последовательности выхода из терминала ANSI / VT100 предоставляет пример.
Set Attribute Mode <ESC>[{attr1};...;{attrn}m
Sets multiple display attribute settings. The following lists standard attributes:
0 Reset all attributes
1 Bright
2 Dim
4 Underscore
5 Blink
7 Reverse
8 Hidden
Foreground Colours
30 Black
31 Red
32 Green
33 Yellow
34 Blue
35 Magenta
36 Cyan
37 White
Background Colours
40 Black
41 Red
42 Green
43 Yellow
44 Blue
45 Magenta
46 Cyan
47 White
Тем не менее, похоже, что не только стандартные цвета, которые вы нашли, в зависимости от поддержки устройства также есть механизм цветовой палитры.
Однако см. Эту статью Советы по Bash: цвета и форматирование (последовательности управления ANSI / VT100 для гораздо более интенсивного списка с дополнительными ссылками.
Для 256 цветов переднего плана escape-последовательность имеет вид «[38; 5; ColorNumberm», где номер цвета, ColorNumber, взят из предоставленной таблицы. Похоже, «m» является обязательным символом после номера цвета.
Для 256 цветов фона escape-последовательность: «[48; 5; ColorNumberm».
Вы можете использовать 24-битный цвет (обратите внимание, что шестнадцатеричный цвет не обязательно 24-битный, и вам не нужен шестнадцатеричный цвет для обозначения 24-битного цвета):
printf "\x1b[${bg};2;${red};${green};${blue}m\n"
Пример:
printf "\x1b[38;2;255;100;0mTRUECOLOR\x1b[0m\n"
Обратите внимание, однако, что ваш терминал должен поддерживать его (vt100, конечно, не поддерживает его, но некоторые программные эмуляторы терминала поддерживают).
Существует также 256-цветный режим, который достаточно широко поддерживается — если вы хотите более 16 цветов, это, вероятно, ваш лучший выбор.
Источник:
VT100 никогда не делали цвета (см. Ncurses FAQ Как получить цвет с VT100?). Что касается VT100, полезным источником информации является http://vt100.net
Последовательности цветов в вопросе OP схематично задокументированы в Функции управления для кодированных наборов символов в качестве значений для последовательности управления SGR (выберите графическое представление). Те, а также расширение xterm 256-color описаны в Управляющие последовательности XTerm. В Интернете есть много мест, где можно найти информацию об этих последовательностях управления, но не все являются полезными источниками информации.