Как я произвожу окрашенный текст к терминалу Linux?

Как я печатаю окрашенные символы к терминалу Linux, который поддерживает его?

Как я говорю, поддерживает ли терминал цветовые коды?

277
задан Rakete1111 9 September 2018 в 23:08
поделиться

3 ответа

Вам нужно вывести цветовые коды ANSI. Обратите внимание, что не все терминалы поддерживают это; если цветовые последовательности не поддерживаются, будет выводиться мусор.

Пример:

 cout << "\033[1;31mbold red text\033[0m\n";

Здесь, \033 - это символ ESC, ASCII 27. За ним следует [, затем ноль или более чисел, разделенных ;, и, наконец, буква м. Цифры описывают цвет и формат, на который следует переключиться с этого момента.

Коды цветов переднего плана и фона:

         foreground background
black        30         40
red          31         41
green        32         42
yellow       33         43
blue         34         44
magenta      35         45
cyan         36         46
white        37         47

Кроме того, вы можете использовать следующие:

reset             0  (everything back to normal)
bold/bright       1  (often a brighter shade of the same colour)
underline         4
inverse           7  (swap foreground and background colours)
bold/bright off  21
underline off    24
inverse off      27

Другие, менее широко поддерживаемые коды см. в таблице в Википедии.


Чтобы определить, поддерживает ли ваш терминал цветовые последовательности, прочитайте значение переменной окружения TERM. В ней должен быть указан конкретный тип используемого терминала (например, vt100, gnome-terminal, xterm, screen, ...). Затем посмотрите это в базе данных terminfo; проверьте возможность colors.

373
ответ дан 23 November 2019 в 02:06
поделиться

Вы можете использовать escape-последовательности, если ваш терминал это поддерживает. Например:

echo \[\033[32m\]Hello, \[\033[36m\]colourful \[\033[33mworld!\033[0m\]
9
ответ дан 23 November 2019 в 02:06
поделиться

Лучше всего использовать библиотеку ncurses - хотя это может быть кувалдой, чтобы сломать орех, если вы просто хотите вывести простую цветную строку

2
ответ дан 23 November 2019 в 02:06
поделиться
Другие вопросы по тегам:

Похожие вопросы: