
Я установил монохромный тип терминала в inittab
файле следующим образом:
c2:... tty2 linux-m
но когда я ввожу команду с цветным выводом, например:
ls --color=always -l
Я все еще получаю цветной результат. Как это может быть, если терминал настроен на отсутствие цвета (определение tty в файле inittab, как указано выше).
решение1
Только тип терминалаописываетопределенный способ использования терминала. Нет никаких гарантий, что терминал действительно ведет себя таким образом, и нет никаких гарантий, что программа использует другую информацию для манипулирования терминалом.
В этом случае ls
программа использует собственную жестко запрограммированную базу данных, в которой указано, что «linux» выполняет цвет.
Дальнейшее чтение: часто задаваемые вопросы по ncursesЗаявки ошибочно принимаются за пользователей библиотеки
решение2
Как упоминалось ранее, эти программы, скорее всего, напрямую выводятEscape-последовательности ANSI:
Поскольку таблицы поиска на 256 цветов стали обычным явлением на графических картах, были добавлены управляющие последовательности для выбора из предопределенного набора из 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.страница руководства xtermтакже перечислены -cm
опции для отключения распознавания управляющих последовательностей ANSI. Это также упоминается в ответах на связанный вопрос:
-см
Эта опция отключает распознавание управляющих последовательностей смены цвета ANSI. Она устанавливает ресурс colorMode в значение "false".
Настраивая информацию о терминале, вы определяете возможности терминала (в соответствии сman terminfo). Таким образом, то, что вы делаете, равносильно тому, что вы говорите ls
и т. д., что вы уверены, что можете делать определенные вещи, но это не значит, что они должны это каким-либо образом уважать.