Funzionalità del terminale - Terminal capabilities
Nell'informatica e nelle telecomunicazioni, le capacità di un terminale sono varie caratteristiche del terminale, al di là di ciò che è disponibile da una pura telescrivente , che i sistemi host (ei programmi in esecuzione su di essi) possono utilizzare. Si tratta (principalmente) di codici di controllo e codici di escape che possono essere inviati o ricevuti dal terminale. I codici di escape inviati al terminale svolgono varie funzioni di cui è capace un terminale CRT (e emulatori di terminale software ), ma che una telescrivente non lo è; come spostare il cursore del terminale in posizioni sullo schermo, cancellare e scorrere tutto o parte dello schermo, accendere e spegnere i dispositivi di stampa collegati, programmare i tasti funzione programmabili, cambiare i colori e gli attributi del display (come il video inverso ) e l'impostazione del display stringhe del titolo. I codici di escape ricevuti dalle cose significano terminali come tasto funzione , tasto freccia , e altri chiave speciale ( tasto Home , tasto di fine chiamata , aiuto chiave , PagSu , PagGiù , inserto chiave , tasto di cancellazione , e così via) sequenze di tasti .
Unix e POSIX: termcap, terminfo, et al.
In Unix e altri sistemi compatibili con POSIX che supportano l' interfaccia terminale POSIX , queste funzionalità sono codificate in database configurati da un amministratore di sistema e accessibili dai programmi tramite la libreria terminfo (che sostituisce la vecchia libreria termcap ), sulla quale a loro volta vengono librerie costruite come le librerie curses e ncurses , grazie alle quali i programmi applicativi utilizzano le capacità del terminale per fornire interfacce utente testuali con finestre, finestre di dialogo, pulsanti, etichette, campi di input, menu e così via. L'intenzione è che ciò consenta ai programmi applicativi di essere indipendenti dalle effettive caratteristiche del terminale. Non hanno bisogno di cablare alcun codice di controllo o sequenze di escape nel loro codice, quindi non hanno problemi a essere utilizzati su una gamma di terminali con una gamma di funzionalità.
termcap
La libreria termcap (per " capacità term inal cap ") è stata sviluppata per i sistemi BSD. Utilizza un database memorizzato nel file / etc / termcap . Questo database è costituito da una serie di record (ognuno dei quali consiste in una o più righe nel file, unite da caratteri backslash alle estremità di ogni riga che continua su una successiva), ognuno dei quali rappresenta le capacità di un particolare terminale. I campi del record comprendono il nome oi nomi del tipo di terminale, seguiti da una sequenza di capacità, separate da due punti. I campi di capacità stessi si dividono in tre gruppi:
- caratteristiche del terminale
- Questi comprendono cose come il numero (nominale) di righe e colonne del display del terminale, se l'output va a capo automaticamente sulla riga successiva quando raggiunge la fine di una riga, e così via.
- sequenze di controllo inviate come output al terminale
- Questi comprendono i codici di controllo e le sequenze di escape inviate al terminale affinché possa eseguire un'azione (non necessariamente un'azione di visualizzazione). Un esempio di uno dei più semplici è la sequenza di output per cancellare lo schermo, che può essere il carattere di avanzamento del modulo (ASCII FF ) su alcuni tipi di terminale ma può, ad esempio, essere la sequenza di escape ␛2J su un terminale che richiede sequenze di escape ANSI .
- sequenze di controllo inviate come input dal terminale
- Questi comprendono i codici di controllo e le sequenze di escape che il terminale invia all'host per rappresentare varie azioni ed eventi, come tasti funzione e tasti freccia che vengono premuti.
terminfo
La libreria terminfo (" term inal info rmation") è stata sviluppata per i sistemi System V. Utilizza un database memorizzato in più file all'interno di una directory, che può essere variamente (su diversi sistemi Unix e compatibili con POSIX) / usr / lib / terminfo , / usr / share / terminfo , o anche / usr / share / lib / terminfo . (La sua posizione non è nemmeno uniforme tra le diverse distribuzioni di Linux .)
A differenza del database termcap, viene compilato il database terminfo, un database leggibile dalla macchina che è costruito da un formato di file sorgente leggibile dall'uomo da un programma di utilità, tic . Possono essere decompilati da un formato leggibile dalla macchina a un formato leggibile da un altro programma di utilità, infocmp . Il comando per visualizzare la forma leggibile dalla persona della definizione di terminale "vt100", ad esempio, è:
infocmp vt100
L'uso di un formato leggibile dalla macchina era quello di evitare il sovraccarico non necessario, nei programmi applicativi che utilizzano sistemi come la libreria termcap, di analizzare ripetutamente il contenuto del database per leggere i campi di un record. L'utilizzo di più file era per evitare l'overhead simile di analizzare il contenuto del database per trovare il record del database per il tipo di terminale di destinazione. L'indice del nome del tipo di terminale è, effettivamente, la struttura di directory ordinaria del filesystem Unix / POSIX. Originariamente, Unix aveva gravi problemi di prestazioni con directory di grandi dimensioni contenenti molti file, e quindi terminfo utilizza una struttura a due livelli, dividendo le voci di directory per prima lettera in una serie di sottodirectory. I formati di filesystem più recenti usati sui sistemi Unix non soffrono tanto di questi problemi (perché le loro strutture di directory su disco non sono più semplici array di voci, ma sono organizzate in alberi o tabelle hash) e quindi la necessità di questo elemento di progettazione , che esiste ancora nelle moderne implementazioni terminfo, da allora è scomparso.
Programmi di utilità per esercitare le capacità del terminale
Sui sistemi Unix, il comando tput viene utilizzato per cercare una capacità specifica nel database del sistema e inviarla all'output standard del comando (che è, presumibilmente, il terminale mediante il quale deve essere eseguita la funzione indicata dalla capacità). Una delle operazioni più semplici è cancellare lo schermo. Il nome del campo del database che memorizza la sequenza di output per questo è chiaro , quindi gli argomenti del comando per il programma tput per cancellare lo schermo sono
tput clear
Un'altra operazione consiste nell'inizializzare o ripristinare il terminale a uno stato predefinito noto (di attributi di caratteri, caratteri, colori e così via). I comandi per questo sono:
tput init
e
tput reset
Normalmente il comando tput utilizza il tipo di terminale specificato dalla TERM variabile d'ambiente , una delle variabili d'ambiente di controllo dell'interfaccia del terminale POSIX . Questo può essere sovrascritto, tuttavia, per forzare tput a cercare un diverso tipo di terminale nel database, con un'opzione della riga di comando per il comando. Quindi, ad esempio, per emettere la sequenza di reset appropriata per il tipo di terminale denominato "vt100" nel database (solitamente un terminale DEC VT100 ), indipendentemente dal tipo di terminale specificato nelle variabili d'ambiente, il comando è:
tput -T vt100 reset
Riferimenti
Cosa supporta cosa
Fonti utilizzate
- Afzal, Amir (2008). UNIX illimitato: un approccio iniziale (5 ° ed.). Prentice Hall. ISBN 978-0-13-119449-6 .
- Blum, Richard (2008). Riga di comando di Linux e Bibbia di scripting della shell . Serie della Bibbia. John Wiley e figli. ISBN 978-0-470-25128-7 .
- Coffin, Stephen (1991). Sistema UNIX V release 4: il riferimento completo . Osborne McGraw-Hill. ISBN 978-0-07-881653-6 .
- Frisch, Æleen (2002). Amministrazione di sistema essenziale . Un manuale di poche parole (3a ed.). O'Reilly Media, Inc. ISBN 978-0-596-00343-2 .
- Kumar, Sudhir (2004). Enciclopedia del sistema operativo . Pubblicazioni Anmol PVT. LTD. ISBN 978-81-261-1792-5 .
- Raymond, Eric S. (2004). L'arte della programmazione Unix . Serie di computer professionali Addison-Wesley. Addison-Wesley. ISBN 978-0-13-142901-7 .
- Winsor, Janice (2001). Solaris 8 Advanced System Administrator's Guide (3a ed.). Prentice Hall PTR. ISBN 978-0-13-027703-9 .
Ulteriore lettura
- Strang, John; Mui, Linda; O'Reilly, Tim (1991). Termcap e terminfo . Manuale di Nutshell (3a ed.). O'Reilly Media, Inc. ISBN 978-0-937175-22-4 .