Можно ли использовать шестнадцатеричные значения цвета с escape-кодами vt100 Переполнение стека

Я только что узнал, как использовать escape-код vt100, чтобы изменить цвет фона и текста в терминале (\033[30mа также\033[40m). Мне было интересно, есть ли способ использовать шестнадцатеричные цветовые коды вместо того, чтобы ограничиваться 8 цветами, которые вы получаете за использование 30 — 37 или 40 — 47. Что-то вроде:\033[#48FF1Fm,
Я не удивлюсь, если это будет невозможно, но я подумал, что стоит спросить.

0

Решение

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».

0

Другие решения

Вы можете использовать 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 цветов, это, вероятно, ваш лучший выбор.

Источник:

https://gist.github.com/XVilka/8346728

0

VT100 никогда не делали цвета (см. Ncurses FAQ Как получить цвет с VT100?). Что касается VT100, полезным источником информации является http://vt100.net

Последовательности цветов в вопросе OP схематично задокументированы в Функции управления для кодированных наборов символов в качестве значений для последовательности управления SGR (выберите графическое представление). Те, а также расширение xterm 256-color описаны в Управляющие последовательности XTerm. В Интернете есть много мест, где можно найти информацию об этих последовательностях управления, но не все являются полезными источниками информации.

0
По вопросам рекламы [email protected]