TERM
Durch Konvention bezeichnet eine Klemme Beschreibung. Ursprünglich nannte dies einen Abschnitt einer Termcap -Textdatei (ab Ende der 1970er Jahre). Mitte der 1980er Jahre wurde terminfo als kompilierte (binäre) Datei eingeführt, die beim Abrufen der Terminalbeschreibung Zeit sparte. Während beide für alle Unix-ähnlichen Plattformen verfügbar sind, wird termcap heutzutage nur noch selten als Emulation mit terminfo verwendet.
Für beide Datenformate extrahieren Anwendungen normalerweise Daten aus der Terminaldatenbank mit wiederverwendbaren Programmierbibliotheken. Die terminfo-Programmierbibliothek ist normalerweise Teil der übergeordneten Curses-Bibliothek, obwohl sie (z. B. optional wie in ncurses) als separate Bibliotheksdatei bereitgestellt werden kann. Unabhängig davon, ob die Terminfo-Bibliothek separat bereitgestellt wird oder nicht, wird sie in diesen Fällen als Teil der Curses-Bibliothek betrachtet. (Es gibt auch einige andere übergeordnete Bibliotheken wie Slang).
Der Terminaldatenbankeintrag für jedes Terminal enthält Eigenschaften, die als Funktionen bezeichnet werden . Sie teilen der Curses-Bibliothek (oder Anwendungen, die termcap / terminfo direkt verwenden) mit, wie nützliche Vorgänge wie das Löschen des Bildschirms ausgeführt werden sollen. Für die meisten Terminals ist dies eine Escape-Sequenz. Einige Terminals unterstützen zu diesem Zweck möglicherweise keine Escape-Sequenz. Es gibt andere Funktionen, die von der Curses-Bibliothek kombiniert werden können, um den Bildschirm zu löschen (z. B. das Löschen jeder Zeile). Nicht alle Funktionen sind Escape-Sequenzen. Es gibt boolean und Anzahl von Fähigkeiten wie auch beispielsweise zu sagen , ob ein Merkmal unterstützt wird, und wie groß etwas ist (beispielsweise Bildschirmgröße).
Jede Anwendung, die termcap / terminfo verwendet, verwendet die entsprechende Bibliothek, um die Terminalbeschreibung abzurufen und Vorgänge wie das Einsetzen von Parametern in bestimmte Funktionen auszuführen. Beispielsweise bieten die meisten Terminals die Möglichkeit, den Cursor um eine bestimmte Anzahl von Spalten oder Zeilen von seiner aktuellen Position zu bewegen. Die tparm
(oder tiparm
) Funktionen ersetzen die Zahl durch die Fähigkeit, die tatsächliche Escape-Sequenz zu erhalten.
Die Curses-Bibliothek verfügt über Befehlszeilenanwendungen, die die Terminaldatenbank verwalten ( tic , infocmp ), und einige, die in Shell-Skripten zum Abfragen der Terminaldatenbank oder zum Ausführen von Operationen auf niedriger Ebene mit Terminalfunktionen ( tput , tset / reset ) verwendet werden.
Es gibt unkonventionelle Anwendungen, die TERM
ohne Verwendung der Terminaldatenbank verwendet werden. Die meisten von ihnen codieren einfach ihr Verhalten fest (wie GNU grep, groff und die textuellen Webbrowser links / links2 / elinks), während einige über eine eigene Terminaldatenbank verfügen (z. B. GNU ls), jedoch andere Regeln und verwenden Verhalten.
Zurück zu den Fragen:
Wo wird diese Variable interpretiert und ermöglicht beispielsweise das Zurücksetzen meines Terminalbildschirms mit STRG + l, wenn ich dort den richtigen Wert einstelle?
Die Anwendung und die zugrunde liegenden Bibliotheken interpretieren diesen Wert. Für controlL, die in der Readline - Bibliothek für bash erfolgen (was nutzt eine termcap Programming Interface) können.
Wer prüft zum Beispiel, welche Farben unterstützt werden (xterm vs xterm-256color)?
Die Terminaldatenbank speichert die Anzahl der Farben als Funktion sowie Funktionen zum Festlegen der Vordergrund- und Hintergrundfarben und zum Zurücksetzen von Farben. Einige Anwendungen kombinieren diese Funktionen mit anderen Informationen (z. B. der Behauptung eines Entwicklers, dass dies xterm
"wirklich" ist xterm-256color
).
Die Muschel?
Die meisten Shells verwenden eine Termcap-Programmierschnittstelle, um die Terminalinformationen zu erhalten. Es handelt sich jedoch um Anwendungen, die ihr eigenes Verhalten haben (nicht unbedingt dasselbe wie Flüche).
Die Anwendung oder eine Bibliothek wie ncurses?
(siehe oben: Muscheln sind eine bestimmte Art der Anwendung)
Und wo sind die möglichen Werte / Klemmentypen definiert?
Normalerweise befindet sich dies in einer Terminaldatenbank, die von Anwendungen gemeinsam genutzt wird, die Flüche oder Slang-Bibliotheken verwenden. Einige Anwendungen sind fest codiert oder verwenden eine private Datenbank.
Weiterführende Literatur: