Im Allgemeinen ist es nicht möglich, die aktuellen Farben zu erhalten. Die Ablaufsteuerung eines Terminals erfolgt "innerhalb" des Terminals, wo immer sich das gerade befindet. Mit einem Terminal - Emulator wie xterm
oder einem in einen Betriebssystemkern aufgebaut , dass der Kernel virtuelles Terminals bereitstellt, den internen Zustand des Emulators, einschließlich seiner Vorstellung von dem aktuellen „Darstellungsart“ (dh Farbe und Eigenschaften), ist an der Maschine selbst und ist theoretisch zugänglich. Bei einem realen Terminal befinden sich diese Informationen jedoch an einem bestimmten RAM-Speicherort auf einem physisch getrennten Computer, der über eine serielle Verbindung verbunden ist.
Das heißt, einige Terminals enthalten einen Mechanismus zum Auslesen solcher Informationen als Teil ihres Terminalprotokolls, das über diese serielle Verbindung gesendet wird. Sie bieten Kontrollsequenzen , die ein Programm an das Endgerät senden kann, dass es Grund zu zurücks Informationen über seinen internen Zustand, als Terminal - Eingang. mikeserv
hat Ihnen die Steuersequenzen gezeigt, auf die der xterm
Terminalemulator reagiert. Aber diese sind spezifisch für xterm
. Die im Linux-Kernel integrierten Terminal-Emulatoren und die verschiedenen BSD-Kernel sind beispielsweise unterschiedliche Terminaltypen und implementieren überhaupt keine derartigen Steuersequenzen. Gleiches gilt für ganze Familien von realen Terminals.
DEC VT525-Terminals implementieren einen Auslesemechanismus, verfügen jedoch über eine Reihe von Steuersequenzen, die in keiner Beziehung zu den von verwendeten Sequenzen stehen xterm
. Man sendet die DECRQSS-Sequenz (Request Selection or Setting), um die aktuelle Grafikwiedergabe anzufordern, und das Terminal antwortet mit dem Senden der DECRPSS-Sequenz (Report Selection or Setting). Speziell:
- Host sendet: DCS
$
q
m
ST (DECRQSS mit dem Steuerfunktionsteil von SGR als Einstellung)
- Terminal antwortet: DCS
0
$
r
0
;
3
3
;
4
4
m
ST (DECRPSS mit den Parametern und Steuerfunktionen einer SGR-Steuersequenz, die die aktuellen Vordergrund- und Hintergrundfarben festlegt)
Natürlich zeigt eine sorgfältige Lektüre Ihrer Frage, dass Sie in diesen europäischen Währungssystemen wieder mit einer Banane mit Schokoladenüberzug winken. Was Sie tatsächlich versuchen, für das Sie eine Lösung ausgewählt und dann gefragt haben, wie Sie einen Teil dieser Lösung ausführen möchten , ist , den vorherigen Status beizubehalten, während Sie eine farbige Ausgabe schreiben. Dazu gibt es nicht nur eine DEC VT-Steuersequenz, sondern auch eine SCO-Konsolenterminalsequenz, die von xterm
verschiedenen im Kernel integrierten Terminalemulatoren erkannt wird , und einen Eintrag termcap / terminfo, der angibt, was sie für Ihr Terminal sind.
Die termcap-Einträge sind sc
und rc
. Die Terminfo-Einträge sind save_cursor
und restore_cursor
. Die Namen sind in ihrer Wirkung etwas irreführend (obwohl sie als Warnung dienen, dass Sie sich auf etwas verlassen, das de facto und nicht de jure ist ). Die tatsächlichen Steuersequenzen DECSC, DECRC, SCOSC und SCORC speichern und stellen auch die aktuelle Grafikwiedergabe wieder her.
In dem Artikel, auf den Sie verwiesen haben, geht es darum, Steuersequenzen aus Shell-Skripten zu generieren. Der Befehl, nach dem Sie jetzt suchen, lautet tput
:
Weitere Lektüre
echotc Co
oder unterstütztechoti colors
, aber es gibt einfach keine Variable, in der die aktuelle Farbcodedefinition gespeichert ist.