Прав ли я, что установка типа терминала в записи inittab, например, так: c2: ... tty2 linux-m - это всего лишь своего рода информативная задача - устанавливает переменную TERM для информирования команд / программ / приложений, какой тип терминала на самом деле является системой. То есть, даже если TERM описывает терминал как монохромный тип, но терминал действительно способен отображать цвета, когда команда, подобная ls --color=always отправляет свой вывод на терминал, я показываю цвета, даже если он определен как нецветный в inittab?

1 ответ1

0

TERM действительно информативен, но многие программы / команды будут уважать его или полагаться на него.

Способ получения цвета может сильно зависеть от типа терминала. На практике я подозреваю, что все они используют ANSI (или расширенный набор), где поддерживается цвет.

Если TERM установлен на тип монофонического терминала, программе придется использовать некоторую другую информацию, чтобы решить, какой тип управления цветом терминала использовать. Если по умолчанию установлено значение "ANSI", в настоящее время оно, вероятно, будет работать в большинстве случаев.

Это было бы плохо, если терминал действительно монофонический, для команды / программы было бы лучше использовать моно методы (например, реверс, подчеркивание, интенсивность, зачеркивание, мигание и т.д.) Вместо цвета для визуального различения элементов. ,

Если конкретная программа / команда соблюдает TERM (как это делают многие), она с равной вероятностью сообщит вам, что ваш запрос на цвет не поддерживается типом терминала.

См. Http://tldp.org/HOWTO/NCURSES-Programming-HOWTO/color.html

if(has_colors() == FALSE)
    {   endwin();
        printf("Your terminal does not support color\n");
        exit(1);
    }

Я не проверял исходный код ncurses, чтобы увидеть, как has_colors() и я не знаю, какая часть (если таковая имеется) программ / команд следует вышеуказанному шаблону.

Я считаю, что одна часть очень важного программного обеспечения уважает срок

TERM=xterm-mono robotfindskitten

(mono display)

С другой стороны, ls знает, когда я обманываю.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .