Как вы это сделаете, зависит от вашего терминала. Возможно, вы сможете запросить базу данных termcap или terminfo, чтобы узнать, как это сделать.
Это проще всего продемонстрировать с помощью некоторых tput
команд.
например. на моем текущем терминале:
tput initc 2 500 900 100
tput setaf 2
Определяет цвет 2 как оттенок зеленого (параметры представляют собой значения RGB между 0 и 1000) и переключает основной цвет на этот цвет.
Чтобы увидеть последовательность символов, необходимую в программе C
для вашего терминала, вы можете отобразить возможности с помощью infocmp
.
например. (для моего терминала)
$ infocmp -1 | grep initc
initc=\E]P%p1%x%p2%{255}%*%{1000}%/%02x%p3%{255}%*%{1000}%/%02x%p4%{255}%*%{1000}%/%02x,
$ infocmp -1 | grep setaf
setaf=\E[38;5;%p1%dm,
Форматирование параметра %
немного (хорошо, очень) разбирается, но задокументировано на справочной странице infocmp
. Перевод этого в printf
строку формата не слишком сложен.