TERM
, per convenzione si riferisce a una descrizione terminale. Originariamente questo chiamava una sezione di un file di testo termcap (a partire dalla fine degli anni '70). A metà degli anni '80, terminfo è stato introdotto come un file compilato (binario) che ha permesso di risparmiare tempo quando si è ottenuta la descrizione del terminale. Mentre entrambi sono disponibili per tutte le piattaforme simili a Unix, termcap viene usato raramente oggi tranne che come emulazione usando terminfo.
Per entrambi questi formati di dati, le applicazioni di solito estraggono i dati dal database dei terminali con librerie di programmazione riutilizzabili. La libreria di programmazione terminfo di solito fa parte della libreria curses di livello superiore sebbene possa essere fornita (ad esempio, facoltativamente come in ncurses) come file di libreria separato. Se la libreria terminfo è fornita separatamente o meno, in questi casi è considerata parte della libreria curses. (Ci sono anche alcune altre librerie di livello superiore come il gergo).
La voce del database del terminale per ciascun terminale contiene proprietà denominate capacità . Dicono alla libreria curses (o alle applicazioni che usano direttamente termcap / terminfo) come fare operazioni utili come cancellare lo schermo. Per la maggior parte dei terminali questa è una sequenza di escape. Alcuni terminali potrebbero non supportare una sequenza di escape per questo scopo; ci sono altre funzionalità che possono essere combinate dalla libreria di maledizioni per cancellare lo schermo (come cancellare ogni riga). Non tutte le funzionalità sono sequenze di escape. Ci sono anche funzioni booleane e numeriche , ad esempio per dire se una funzione è supportata e quanto è grande qualcosa (come le dimensioni dello schermo).
Ogni applicazione che utilizza termcap / terminfo utilizza la libreria corrispondente per recuperare la descrizione del terminale, nonché per eseguire operazioni come la sostituzione di parametri in determinate funzionalità. Ad esempio, la maggior parte dei terminali offre la possibilità di spostare il cursore di un determinato numero di colonne o righe dalla posizione corrente. Le funzioni tparm
(o tiparm
) sostituiscono il numero nella capacità di ottenere la sequenza di escape effettiva.
La libreria curses ha applicazioni da riga di comando che mantengono il database dei terminali ( tic , infocmp ) e alcuni che vengono utilizzati negli script della shell per interrogare il database dei terminali o eseguire operazioni di basso livello con funzionalità terminali ( tput , tset / reset ).
Esistono applicazioni non convenzionali che utilizzano TERM
senza utilizzare il database dei terminali. La maggior parte di questi semplicemente codifica il loro comportamento (come GNU grep, groff e i browser Web testuali links / links2 / elinks), mentre alcuni hanno ciò che equivale al proprio database terminale (come GNU ls), ma usando regole e comportamento.
Torna alle domande:
Quindi, dove viene interpretata questa variabile e consente ad esempio di ripristinare la schermata del mio terminale usando CTRL + l se imposto il valore giusto lì?
L'applicazione e le librerie sottostanti interpretano questo valore. Per controlL, ciò può essere fatto per bash nella libreria readline (che utilizza un'interfaccia di programmazione termcap).
Chi controlla ad esempio quali colori sono supportati (xterm vs xterm-256color)?
Il database del terminale memorizza il numero di colori come funzionalità, insieme a funzionalità per l'impostazione dei colori di primo piano e di sfondo e il ripristino dei colori. Alcune applicazioni combinano queste capacità con altre informazioni (come l'affermazione di uno sviluppatore che xterm
è "realmente" xterm-256color
).
Il guscio?
La maggior parte delle shell utilizza un'interfaccia di programmazione termcap per ottenere le informazioni sul terminale. Tuttavia, sono applicazioni che hanno un loro comportamento (non necessariamente uguale alle maledizioni).
L'applicazione o una libreria come ncurses?
(vedi sopra: le shell sono un particolare tipo di applicazione)
E dove sono definiti i possibili valori / tipi di terminali?
Di solito si trova in un database terminale condiviso da applicazioni che usano le librerie di maledizioni o slang. Alcune applicazioni sono codificate o utilizzano un database privato.
Ulteriori letture: