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 .