
Ich habe den Terminaltyp in inittab
der Datei wie folgt auf Monochrom eingestellt:
c2:... tty2 linux-m
aber wenn ich einen Befehl eingebe, mit farbiger Ausgabe wie:
ls --color=always -l
Ich erhalte immer noch farbige Ergebnisse. Wie kann das sein, wenn das Terminal auf Nicht-Farbe eingestellt ist (TTY-Definition in der Inittab-Datei wie oben).
Antwort1
Der Terminaltyp nurbeschreibteine bestimmte Art, ein Terminal zu verwenden. Es gibt keine Garantie, dass sich ein Terminal tatsächlich so verhält, und es gibt auch keine Garantie, dass ein Programm andere Informationen zur Manipulation des Terminals verwendet.
In diesem Fall ls
verwendet das Programm seine eigene fest codierte Datenbank, die besagt, dass „Linux“ Farbe erzeugt.
Weiterführende Literatur: ncurses FAQBewerbungen fälschlicherweise als Bibliotheksnutzer angegeben
Antwort2
Wie bereits erwähnt, geben diese Programme wahrscheinlich direkt ausANSI-Escapesequenzen:
Als Lookup-Tabellen mit 256 Farben auf Grafikkarten üblich wurden, wurden Escape-Sequenzen hinzugefügt, um aus einem vordefinierten Satz von 256 Farben auszuwählen:[citation needed]
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: Graustufen von Schwarz nach Weiß in 24 Schritten
Dieses Argument würde auch durch Antworten auf eine ähnliche Frage mit dem Titel gestärkt werden.Deaktivieren Sie Farben auf dem Terminal und SSH auf dem Unix SE.
In Ihren vorherigen Fragen zu diesem Thema haben Sie erwähnt, dass Sie xterm verwenden.xterm-manpagelistet auch eine -cm
Option zum Deaktivieren der Erkennung von ANSI-Escape-Sequenzen auf. Dies wird auch in den Antworten auf die verlinkte Frage erwähnt:
-cm
Diese Option deaktiviert die Erkennung von ANSI-Escapesequenzen für Farbänderungen. Sie setzt die Ressource colorMode auf „false“.
Mit der Festlegung der Terminalinformationen definieren Sie die Fähigkeiten des Terminals (gemäßMann Terminfo). Was Sie tun, bedeutet also, dass Sie anderen mitteilen ls
usw., dass Sie sicher sind, bestimmte Dinge tun zu können, aber das bedeutet nicht, dass sie das in irgendeiner Weise respektieren müssen.