Я установил тип терминала монохромный в файле inittab следующим образом:

c2:... tty2 linux-m

но когда я набираю команду с цветным выводом вроде:

ls --color=always -l

Я все еще получаю цветной результат. Как это может быть, если терминал настроен не на цвет (определение tty в файле inittab, как указано выше).

2 ответа2

0

Как упоминалось ранее, эти программы, вероятно, напрямую выводят escape-последовательности ANSI:

Поскольку 256-цветовые таблицы поиска стали распространенными на графических картах, были добавлены escape-последовательности для выбора из предварительно определенного набора из 256 цветов: [требуется цитата]

ESC[ … 38;5;<n> … m Select foreground color
 ESC[ … 48;5;<n> … m Select background color
 0-  7:  standard colors (as in ESC [ 30–37 m)
 8- 15:  high intensity colors (as in ESC [ 90–97 m)
16-231:  6 × 6 × 6 cube (216 colors): 16 + 36 × r + 6 × g + b (0 ≤ r, g, b ≤ 5)

232-255: оттенки серого от черного до белого за 24 шага

Этот аргумент также будет подтвержден ответами на аналогичный вопрос под названием « Отключить цвета в терминале и SSH в Unix SE».

В своих предыдущих вопросах по этой теме вы упоминали, что используете xterm. Страница man xterm также содержит параметр -cm для отключения распознавания escape-последовательностей ANSI. Это также упоминается в ответах на связанный вопрос:

-см

Эта опция отключает распознавание escape-последовательностей изменения цвета ANSI. Устанавливает для ресурса colorMode значение false.

Задавая информацию о терминале, вы делаете то, что определяете возможности терминала (в соответствии с man terminfo). Таким образом, то, что вы делаете, равносильно тому, чтобы сказать ls и так далее, что вы уверены, что можете делать определенные вещи, но это не значит, что они должны соблюдать это каким-либо образом.

0

Тип терминала описывает только конкретный способ использования терминала. Нет никаких гарантий, что терминал действительно ведет себя таким образом, и нет никаких гарантий, что программа использует другую информацию для манипулирования терминалом.

В этом случае программа ls использует собственную жестко запрограммированную базу данных, в которой говорится, что "linux" выполняет цвет.

Дальнейшее чтение: Ncurses FAQ Приложения miscited пользователей библиотек

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