Это зависит от того, что вы хотите. Цвет ANSI технически относится к 8-цветной палитре, подразумеваемой ECMA-48 (ISO-6429), которая назвала константы в проклятиях. Библиотеки не сохраняют escape-последовательности; они находятся в базе данных . Для терминала ANSI (sic) эти последовательности соответствуют escape-последовательностям, которые устанавливают графическое преобразование (атрибуты видео, такие как полужирный, подчеркивающий, обратный — и цвет).
termcap, terminfo и curses используют более общее понятие, в котором вы начинаете с номера цвета и генерируете escape-последовательность, которая может создавать соответствующий цвет. Терминалы могут не иметь цветов, нескольких цветов (например, 8, но, возможно, 16, 88, 256 для xterm и аналогичных терминалов). Информация, сообщающая, как это сделать, хранится в базе данных терминала с именем возможностей. Для того, чтобы установить цвет переднего плана на ANSI, вы должны использовать setaf
, либо с помощью вызова библиотеки или приложения командной строки, такие как tput
, например,
tput setaf 4
для цвета 4 (синий).Простые приложения используют низкоуровневые termcap или terminfo интерфейсы, как правило, с базами данных terminfo. Хотя вы, возможно, склонны форматировать свои собственные escape-последовательности, эти интерфейсы предоставляют функции форматирования, которые позволяют вам не знать, сколько цветов может поддерживать терминал. База данных терминалов сообщает вашей программе, используя переменную окружения TERM
, чтобы выбрать фактическое описание терминала. Если у вас есть терминал, поддерживающий более 8 цветов, escape-последовательность - , а не, сформированная путем добавления 30 или 40 к номеру цвета.
Ниже приведен пример использования интерфейса TERMINFO низкого уровня из Python:
import curses
curses.setupterm()
curses.putp(curses.tparm(curses.tigetstr("setaf"), curses.COLOR_RED))
curses.putp(curses.tparm(curses.tigetstr("setab"), curses.COLOR_YELLOW))
curses.putp("hello!")
curses.putp(curses.tigetstr("sgr0"))
curses.putp("\n")
Дальнейшее чтение:
'человек terminfo' является бит справки, показывающий две стандартные цветовые карты. – mpez0