[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Il terminale, in qualunque forma esso sia (console, terminale remoto, applicazione a finestra all'interno di X) è il mezzo normale di comunicazione tra l'utente e il sistema. Senza di esso non ci sarebbe alcuna possibilità di avviare nuovi processi e, di conseguenza, nemmeno di poter compiere alcuna attività.
Per questo, l'attivazione di un programma per la gestione del terminale è l'ultima fase di una procedura di inizializzazione del sistema e precede immediatamente l'attivazione della procedura di accesso (il login), cioè il sistema di riconoscimento dell'utente che si accinge a utilizzare il sistema operativo. I programmi Getty che sono i responsabili dell'attivazione del terminale prima dell'attivazione della procedura di accesso, sono introdotti nel capitolo 84.
La tabella 81.1 elenca i programmi e i file a cui si accenna in questo capitolo.
|
È importante poter identificare il terminale da cui si accede, almeno in base al tipo di dispositivo utilizzato. In pratica, si dispone del programma tty (1) che è in grado di restituire il nome del file di dispositivo corrispondente. Con questa informazione si possono creare degli script opportuni, eventualmente per filtrare l'accesso da parte degli utenti.
tty [opzioni] |
Il programma tty emette attraverso lo standard output il nome del terminale con cui si è connessi.
|
2 se sono stati forniti argomenti errati;
3 se si è verificato un errore di scrittura.
L'esempio seguente è solo un pretesto per mostrare in che modo potrebbe essere utile tty. Se l'utente sta utilizzando la prima console virtuale (/dev/tty1
), viene respinto; altrimenti viene eseguito il comando ls.
|
Le caratteristiche dei terminali a caratteri possono essere molto diverse e questo è il problema principale che si pone di fronte alla ricerca verso una standardizzazione nel comportamento dei programmi per i sistemi Unix.
Si distinguono due problemi di ordine diverso: la configurazione del I/O (input-output), ovvero dei flussi di dati tra il terminale (TTY) e il sistema, e la configurazione particolare dello schermo. La configurazione dei flussi di dati regola il modo in cui i dati possono essere inseriti attraverso la tastiera e come questo inserimento può essere controllato sullo schermo durante la sua digitazione (eco); la configurazione dello schermo riguarda il modo di rappresentare simboli determinati e di comportarsi di fronte a sequenze di escape determinate.
|
Il tipo di connessione utilizzata (si pensi alla differenza che c'è tra una console legata strettamente con il sistema, rispetto a un terminale seriale o remoto), implica problemi differenti di gestione della linea TTY. L'utilizzatore normale non ha mai bisogno di preoccuparsi di questo, in quanto per ogni situazione c'è già un'impostazione predefinita che dovrebbe soddisfare le esigenze di tutti. Inoltre, nelle connessioni remote, il problema di questa configurazione si sposta sui programmi che si utilizzano per tali scopi; sono poi questi programmi a definire la configurazione della linea e dei flussi di dati elementari.
All'utente è data la possibilità di verificare questa configurazione e di modificarla, attraverso il programma stty (Set tty).
La fase successiva è la definizione delle particolarità degli schermi dei terminali, per ciò che riguarda le sequenze di escape che questi riconoscono, attraverso una sorta di base di dati, in modo da permettere ai programmi di potervisi adattare.
Prima di descrivere l'utilizzo sommario di stty, conviene prendere confidenza con il problema, attraverso un po' di esercizio.
$
cat > /dev/null
[Invio]
Avviando il programma cat in questo modo, si può analizzare ciò che succede quando si inserisce qualcosa attraverso la tastiera del proprio terminale.
asdfghjkl
[Invio]
qwertyuiop
[Invio]
Digitando lettere normali, queste appaiono semplicemente sullo schermo. L'eco dell'input, non è una cosa scontata; deriva da una configurazione, anche se questa è generalmente predefinita.
[Ctrl p][Ctrl l][Esc][F1][F2][Invio]
^P^L^[^[[[A^[[[B |
Generalmente, i caratteri di controllo che non hanno significati speciali, vengono visualizzati (eco) come lettere maiuscole (o brevi stringhe) precedute da un accento circonflesso, come mostra l'esempio. Si tratta di una caratteristica configurabile, anche se normalmente è già impostata in questo modo.
Ad alcuni caratteri di controllo viene attribuito un significato speciale, che si traduce in un comportamento e non nell'eco di un qualche simbolo.
asdf ghjk lqwe rtyu iop
[Ctrl ?][Ctrl ?][Ctrl ?][Ctrl w][Invio]
asdf ghjk lqwe |
La combinazione [Ctrl ?] genera normalmente il carattere speciale <^?>, che di solito è abbinato alla funzione erase, che a sua volta si traduce nella cancellazione dell'ultimo carattere inserito. La combinazione [Ctrl w] genera normalmente il carattere speciale <^W>, che di solito è abbinato alla funzione werase, che a sua volta si traduce nella cancellazione dell'ultima parola inserita.
Ad altri caratteri di controllo viene abbinato l'invio di un segnale al processo collegato alla linea di terminale. Ecco che così, di solito, la combinazione [Ctrl c] genera il carattere speciale <^C>, con il quale viene inviato un segnale SIGINT al processo collegato. Nello stesso modo, la combinazione [Ctrl z] genera il carattere speciale <^Z>, con il quale viene inviato un segnale SIGTSTP al processo collegato (cosa che generalmente si traduce nell'essere messo sullo sfondo dalla shell).
Per concludere questo esercizio, basta utilizzare la combinazione [Ctrl c], per terminare il funzionamento di cat.
[Ctrl c]
Un'altra cosa interessante è la possibilità di bloccare il flusso dell'output sullo schermo e di riprenderlo successivamente. Per questo si usano normalmente le combinazioni di tasti [Ctrl s] e [Ctrl q], che generano rispettivamente i codici <^S> e <^Q>.
Per verificarne il funzionamento, basta provare a lanciare un comando che emette un output molto lungo, come il seguente:
$
find / -print
[Invio]
Per sospendere il flusso visualizzato sullo schermo del terminale, basta premere [Ctrl s]; per farlo riprendere, [Ctrl q].
Il programma stty (2) permette di modificare le caratteristiche della connessione del terminale al sistema. Se viene avviato senza argomenti, visualizza le informazioni salienti della connessione. Gli argomenti della configurazione sono delle parole chiave che possono apparire precedute o meno dal trattino che di solito si usa per le opzioni: se non si usa il trattino, la parola chiave viene intesa come attivazione di qualcosa, con il trattino si intende la disattivazione della stessa cosa.
stty [opzioni | configurazione] |
Il motivo più comune per servirsi di questo programma è quello di conoscere le combinazioni di tasti che si possono utilizzare per generare dei segnali particolari.
Sia chiaro che i «caratteri» del tipo <^?>, <^W>, <^C>, <^Z>,... si ottengono attraverso «combinazioni virtuali»; pertanto, occorre accertarsi che la configurazione della tastiera corrisponda effettivamente, oppure occorre sapere in che modo vanno generati questi simboli nell'ambito del proprio contesto. Negli esempi che si vedono qui si suppone che il tasto [Ctrl] corrisponda esattamente alle funzioni del modificatore virtuale Control. |
Avviando stty con l'opzione -a si ottiene la configurazione corrente.
$
stty -a
[Invio]
Per esempio, si potrebbe ottenere qualcosa di simile al listato seguente:
speed 38400 baud; rows 25; columns 80; line = 0; intr = ^C; quit = ^\; erase = ^?; kill = ^U; eof = ^D; eol = <undef>; \ |
L'esempio indica in particolare che il carattere intr (interrupt) viene generato con la combinazione [Ctrl c]; il carattere quit viene generato con la combinazione [Ctrl \]; il codice di EOF (End of file) viene generato con la combinazione [Ctrl d]; il carattere susp (suspend) viene generato con la combinazione [Ctrl z].
Per comprendere meglio il senso di questo programma, vale la pena di descrivere l'uso di alcune opzioni, anche se nella maggior parte dei casi, stty non viene mai usato per queste cose (tabella 81.8).
|
I caratteri speciali abbinati a funzionalità particolari in modo predefinito, possono variare da un sistema all'altro. Per modificare l'attribuzione di un carattere speciale a una certa funzione, si utilizza la sintassi seguente:
stty nome_funzione carattere_speciale |
Se al posto del simbolo del carattere speciale si utilizza la stringa ^-, oppure la parola chiave undef, quella funzionalità viene disabilitata.
Segue l'elenco di alcune parole chiave utilizzate per definire funzionalità a cui si possono attribuire caratteri speciali.
Per maggiori dettagli sul funzionamento di questo programma, si veda info stty oppure stty(1).
Il primo tipo di terminale, la telescrivente, non poneva problemi particolari di configurazione: la tastiera permetteva di inserire numeri, simboli e caratteri dell'alfabeto inglese, a volte senza poter distinguere tra maiuscole e minuscole, mentre la stampante emetteva un flusso di testo normale, interrotto da un codice di interruzione di riga.
Quando il terminale attuale viene usato ancora in questo modo, non si pongono problemi di configurazione, perché non è importante sapere le dimensioni (in caratteri) dello schermo e non importa sapere come spostare il cursore sullo schermo.
Nel momento in cui si utilizza un programma che sfrutta lo schermo nel modo al quale si è abituati di solito, mostrando bordi, colori, caselline da riempire, si ha la necessità di usare la tastiera anche per spostare il cursore, cancellare, inserire, attivare funzioni speciali. Quindi, lo schermo deve essere in grado di fare di più che visualizzare semplicemente un flusso di caratteri, deve interpretare delle sequenze particolari come la richiesta di utilizzare un colore determinato, di disegnare un bordo, ecc.
Così, la tastiera non serve solo per scrivere lettere, numeri, punteggiatura e terminare le righe con un ritorno a carrello. Adesso occorre utilizzare anche i tasti che spostano il cursore, occorre assegnare funzionalità particolari a tasti che permettono la modifica del testo e a tasti funzionali programmabili.
|
Nella storia dell'informatica sono esistiti una quantità enorme di tipi diversi di terminali, intesi come complesso tastiera+schermo, ognuno con piccole differenze rispetto agli altri. Per fare in modo che i programmi che richiedono funzionalità superiori a quelle di una normale telescrivente possano adattarsi ai vari tipi di terminale, viene utilizzato un sistema di configurazione predefinito contenente tutte le informazioni necessarie.
Di questo sistema di configurazione ne esistono due tipi: Termcap e Terminfo. Il primo è il più antico ed è ormai obsoleto, ma viene mantenuto per motivi storici e probabilmente per assicurare la compatibilità con i programmi più vecchi.
Il sistema Termcap è formato soltanto da un file di testo collocato nella directory /usr/share/misc/
(/usr/share/misc/termcap
) e il suo contenuto assomiglia vagamente a quello del file /etc/printcap
(il file di definizione delle stampanti).
Il sistema Terminfo è invece qualcosa di più complesso. È costituito da tanti file, uno per ogni tipo di terminale, distribuiti su una serie di directory. Il punto di partenza di questa struttura dovrebbe essere la directory /usr/share/terminfo/
.
A partire da terminfo/
si diramano una serie di directory composte da un solo carattere, corrispondente all'iniziale dei nomi di terminale che contengono. Il listato seguente, mostra solo un estratto minimo di questa struttura.
|
Se la definizione di un tipo di terminale può essere adatta a diversi nomi, si utilizzano normalmente dei collegamenti simbolici.
I file di definizione del sistema Terminfo sono il risultato di una compilazione attraverso il programma tic, (3) come nell'esempio seguente:
#
tic prova
[Invio]
In questo modo, si va a compilare il file prova
, generando presumibilmente il file /usr/share/terminfo/p/prova
.
Si ottiene facilmente un elenco dei tipi di terminale previsti con il programma toe: (4)
$
toe
[Invio]
ansi ansi/pc-term compatible with color dumb 80-column dumb tty linux linux console linux+utf8 linux console in utf-8 mode rxvt rxvt terminal emulator (X Window System) rxvt-basic monochrome rxvt terminal emulator (X Window System) screen VT 100/ANSI X3.64 virtual terminal screen-w VT 100/ANSI X3.64 virtual terminal with 132 cols sun Sun Microsystems Inc. workstation console screen-s VT 100/ANSI X3.64 virtual terminal with hardstatus line screen-bce VT 100/ANSI X3.64 virtual terminal with bce vt100 dec vt100 (w/advanced video) vt102 dec vt102 vt220 dec vt220 vt52 dec vt52 xterm X11 terminal emulator xterm-debian Debian xterm (VT220-conformant backspace) xterm-xfree86 xterm terminal emulator (XFree86) xterm-r5 xterm R5 version xterm-r6 xterm X11R6 version xterm-vt220 XFree86 xterm emulating vt220 xterm-color generic "ANSI" color xterm (X Window System) xterm-mono monochrome xterm pcansi ibm-pc terminal programs claiming to be ansi cons25 freebsd console (25-line ansi mode) mach Mach Console mach-bold Mach Console with bold instead of underline mach-color Mach Console with ANSI color |
La directory /usr/share/terminfo/
è il punto di partenza predefinito per il sistema Terminfo, ma questo può essere alterato utilizzando la variabile di ambiente TERMINFO, per indicare una directory differente. Volendo è possibile personalizzare il sistema Terminfo creando una struttura analoga a partire da ~/.terminfo/
, cioè dalla directory .terminfo/
nella propria directory personale.
La variabile di ambiente TERM è il mezzo per definire il tipo di terminale che si utilizza. Normalmente viene impostata automaticamente nel modo più opportuno, con il nome di terminale la cui configurazione deve essere letta da Termcap o da Terminfo.
Quando è impostata in modo errato, si possono presentare due situazioni: il nome del terminale non è previsto, oppure il terminale che si utilizza effettivamente non è compatibile con la definizione contenuta in questa variabile. Nel primo caso, quando si avvia un programma che richiede l'utilizzo di tutto lo schermo, viene segnalato l'errore e, a seconda dei casi, il programma si avvia ugualmente facendo riferimento a un terminale elementare, oppure si rifiuta semplicemente di funzionare.
Unknown terminal: pippo Check the TERM environment variable. Also make sure that the terminal is defined in the terminfo database. |
Nel secondo caso, il terminale ha invece un comportamento insolito, per diversi aspetti. Per esempio si possono notare simboli strani sullo schermo, la tastiera potrebbe non rispondere nel modo consueto, lo schermo potrebbe essere ridisegnato solo parzialmente.
A questo punto dovrebbe essere chiaro che la tastiera e lo schermo funzionano in maniera differente a seconda di tante condizioni, sia legate alle caratteristiche fisiche, sia relative alle caratteristiche dei programmi attraverso i quali si comunica con le applicazioni finali. Per esempio, il fatto che su una tastiera sia presente il tasto [Canc], non vuol dire necessariamente che poi questo dia i risultati che ci si aspetta: la sua pressione potrebbe non avere alcun effetto, oppure generare qualunque altro risultato diverso dal previsto.
Dipende dal nome indicato nel sistema di configurazione dei terminali se questo è in grado di gestire il segnale generato dal tasto [Canc] della propria tastiera e se il significato che a questo viene attribuito corrisponde alle aspettative.
Volendo fare un esempio più concreto e anche piuttosto comune, si può provare a confrontare il funzionamento del programma mc (Midnight Commander), utilizzando la definizione di un terminale differente dal solito, per esempio ansi-mono.
$
TERM=ansi-mono
[Invio]
$
export TERM
[Invio]
Si osserva, prima di tutto, che mancano i colori, che alcune bordature non sono corrette, che i tasti funzionali non danno più l'effetto desiderato.(5)
Alle volte ci si trova veramente davanti a terminali che non possono offrire più di tanto, magari perché si sta operando attraverso una connessione remota con un programma che è in grado di emulare solo alcuni vecchi tipi di terminale. Allora entrano in gioco due elementi: le alternative offerte dal programma, per cui una stessa cosa può essere ottenuta in modi differenti, per poter essere utilizzato anche in presenza di terminali con poche potenzialità; l'abilità dell'utente di adattarsi alle diverse situazioni.
L'esempio tipico di questo genere di programmi è dato dalle interpretazioni recenti di VI. Quasi tutti questi programmi sono in grado di gestire i tasti freccia, [Ins] e [Canc]. Ma quando questi non sono disponibili, si può ritornare all'uso tradizionale con i comandi h, j, k e l, per spostare il cursore, i e x per iniziare l'inserimento e per cancellare.
Ciò significa che, quando si studia un nuovo programma, non si devono disdegnare i comandi apparentemente antiquati, perché sono quelli che poi permettono di «tirarsi fuori dai guai».
Esistono due situazioni in cui si può avere la necessità di ripulire lo schermo: quando si scrive uno script con cui si vuole ripulire tutto per mostrare un messaggio all'inizio dello schermo, oppure quando lo schermo sembra impazzito.
Per questo si utilizzano due programmi: clear e reset. Questi, in realtà, si avvalgono di un terzo che ha funzioni più generali: tput. (6)
clear |
Il programma clear chiama tput con l'argomento clear, allo scopo di ripulire lo schermo e ricominciare dalla prima posizione in alto dello schermo.
reset |
Il programma reset chiama tput con una serie di argomenti volti a reinizializzare il terminale. È particolarmente utile l'uso di questo programma quando sullo schermo non appaiono più delle lettere normali. In tal caso, si può scrivere reset e premere [Invio] alla cieca. Di solito funziona.
Se si vuole sperimentare questa situazione, basta fare un cat di un file binario, per esempio un programma qualunque, per non potere più leggere quello che si scrive.
In ogni caso, questi programmi, avvalendosi di tput, funzionano solo in base a quanto conosciuto per mezzo di Terminfo o Termcap. Se la variabile TERM non contiene il nome corretto, oppure se questo non è presente nel sistema di configurazione dei terminali, a nulla serve un reset.
Si vedano le pagine di manuale: tput(1), clear(1) e reset(1).
Il sistema Terminfo permette di conoscere le stringhe (i comandi) corrispondenti a determinate azioni per il terminale che si utilizza. Attraverso il programma setterm si può impostare in qualche modo il proprio terminale utilizzando implicitamente tali comandi. La documentazione di setterm, setterm(1), è stringatissima e quindi insufficiente a comprendere bene tutte le possibilità che si avrebbero a disposizione. Tuttavia si tratta di un tipo di intervento sulla gestione del terminale di importanza marginale; quindi non vale la pena di preoccuparsene tanto.
setterm opzione |
Anche se si può utilizzare una sola opzione per volta, quelle disponibili sono molte, ma qui ne vengono descritte solo alcune, tanto da mostrare il senso di questo programma di servizio.
|
La console di un sistema GNU/Linux funziona perfettamente se si utilizza la codifica ISO 8859-1, che è quella predefinita. Per cambiare codifica nell'ambito degli insiemi ISO 8859-n, è sufficiente cambiare l'insieme dei caratteri usati per la visualizzazione sullo schermo, con il programma consolechars (capitolo 84), quindi basta intervenire nella configurazione locale con la variabile di ambiente LANG ed eventualmente le variabili LC_*. Le cose si complicano quando si vuole passare all'insieme di caratteri universale (Unicode), che richiede precisamente l'utilizzo della codifica UTF-8, in cui i caratteri possono utilizzare uno o più byte (capitolo 306).
In questa sezione si annotano alcuni passaggi utili per attivare la gestione della codifica UTF-8 sulla console, tenendo conto però che si tratta di un problema che non ha ancora una soluzione ottimale; inoltre, sono ancora molti gli applicativi che utilizzano la console e non si adattano alla codifica UTF-8 in modo trasparente.
Per poter visualizzare i simboli dell'insieme di caratteri universale, occorre disporre di questi, indicando al sistema un file che ne contiene le informazioni. Si tratta di file contenuti nella directory /usr/share/consolefonts/
e quelli più indicati per la visualizzazione simultanea degli alfabeti comuni corrispondono al modello LatArCyrHeb-nn.psf
. In pratica si tratta di un insieme di caratteri che consente la visualizzazione di testi in alfabeto latino, arabo, cirillico ed ebraico. Si carica uno di questi file nel modo seguente:
#
consolechars -f /usr/share/consolefonts/LatArCyrHeb-16.psf
[Invio]
Successivamente, la visualizzazione corretta sullo schermo della console richiede anche l'invio di un codice particolare, con l'aiuto del comando echo:
#
echo -n -e '\033%G'
[Invio]
In alternativa, si può indirizzare precisamente al file di dispositivo della console virtuale che deve essere impostata. L'esempio seguente si riferisce a /dev/tty1
, ovvero quella che dovrebbe essere la prima console virtuale:
#
echo -n -e '\033%G' > /dev/tty1
[Invio]
|
Si osservi che non sempre le cose funzionano bene. Quando si vogliono caricare insiemi di caratteri del calibro di LatArCyrHeb-nn.psf
, si potrebbe osservare che il testo colorato appare con caratteri errati; per cercare di ovviare a questo inconveniente, si può tentare di caricare prima un insieme comune, quale è quello contenuto nel file lat1u-16.psf
. Praticamente, l'esempio già mostrato andrebbe adattato così:
#
consolechars -f /usr/share/consolefonts/lat1u-16.psf
[Invio]
#
consolechars -f /usr/share/consolefonts/LatArCyrHeb-16.psf
[Invio]
#
echo -n -e '\033%G'
[Invio]
Per poter scrivere utilizzando la codifica UTF-8, la mappa della tastiera deve essere stata caricata usando loadkeys con l'opzione -u, ovvero --unicode. È possibile adattare la mappa corrente con l'aiuto di dumpkeys, nel modo seguente:
#
dumpkeys | loadkeys --unicode
[Invio]
In ogni caso, occorre modificare anche la modalità di funzionamento attraverso kbd_mode:
#
kbd_mode -u
[Invio]
Bisogna considerare che le sequenze di composizione non funzionano quando la tastiera è stata configurata in modalità UTF-8. Per la precisione, se sono previste, le sequenze di composizione generano i caratteri, ma lo fanno sempre in byte, pertanto, il loro uso diventa inutile e dannoso, perché generalmente i programmi non sono preparati a gestire sequenze incomplete in UTF-8.
Naturalmente non bisogna dimenticare di definire la configurazione locale corretta. Prima di poter intervenire nella variabile LANG ed eventualmente nelle variabili LC_*, occorre generare la localizzazione prescelta. Se la propria distribuzione GNU/Linux non fornisce uno strumento più semplice, si può procedere in modo manuale. A partire da /usr/share/locale/
dovrebbero essere disponibili delle sottodirectory che contengono le localizzazioni già definite. Supponendo di voler creare la localizzazione it_IT.UTF-8, ci dovrebbe essere la sottodirectory con lo stesso nome: it_IT.UTF-8/
. Se non c'è, la si può creare come nell'esempio seguente:
#
localedef -v -c -i it_IT -f UTF-8 /usr/share/locale/it_IT.UTF-8
[Invio]
Nel caso di una distribuzione GNU/Linux Debian è più comodo utilizzare il comando seguente:
#
dpkg-reconfigure locales
[Invio]
|
Una volta creata la localizzazione è sufficiente intervenire nella variabile di ambiente LANG, lasciando vuote le altre variabili LC_*:
$
LANG=it_IT.UTF-8
[Invio]
$
export LANG
[Invio]
Il pacchetto Linux console tools (7) contiene due script che dovrebbero facilitare il passaggio rapido alla codifica UTF-8 e il ripristino della codifica normale:
unicode_start |
unicode_stop |
Teoricamente il primo script, che attiva la funzionalità, prevede la possibilità di indicare l'insieme di caratteri da usare; in pratica, forse è meglio definire prima questa cosa.
Vale la pena di vedere cosa fanno questi script. Nei listati seguenti sono state semplificate molte cose:
|
|
Questi script potrebbero essere «rinforzati» aggiungendo la selezione dell'insieme dei caratteri per lo schermo e leggendo la configurazione della mappa della tastiera da un file stabilito. Seguono altri due esempi, sempre molto semplificati, dove in particolare si cerca di inviare il codice di attivazione dello schermo alle prime sei console virtuali:
|
|
Questi comandi possono essere utilizzati dall'utente root o da un utente comune, ma nel secondo caso, l'effetto del cambiamento di funzionamento si trasmette in modo incompleto alle console, perché possono mancare i permessi di scrittura ai file di dispositivo delle altre console virtuali. Si osservi che, una volta deciso di configurare la console per l'uso della codifica UTF-8, sarebbe meglio evitare di riportarla a funzionare secondo il vecchio sistema a byte, perché comunque c'è la possibilità di avviare i programmi più vecchi con l'aiuto di luit.
|
Il programma luit, che fa parte di X, è un filtro che si utilizza per avviare un altro programma, quando il proprio terminale a caratteri è configurato in modo da gestire la codifica UTF-8 (sia per la tastiera, sia per lo schermo) e il programma in questione utilizza una codifica differente:
luit [opzioni] [--] [programma [argomenti]] |
Come si può intuire dal modello sintattico, in mancanza dell'indicazione di un programma da avviare, luit avvia una shell. Al posto di descrivere le opzioni di questo programma, vengono mostrati alcuni esempi, a cominciare da quello più semplice, in cui il controllo della conversione avviene semplicemente attraverso la configurazione della variabile LANG:
$
LC_ALL=en_US.ISO-8859-1 luit mio_programma
[Invio]
In questo caso si avvia il programma mio_programma specificando per lui la variabile di ambiente LC_ALL con il valore che si può vedere. Il programma luit fa in modo che i dati provenienti dalla tastiera siano convertiti da UTF-8 a ISO 8859-1, facendo l'opposto per i dati diretti dal programma allo schermo. Si osservi, comunque, che la configurazione locale del tipo en_US.ISO-8859-1 deve essere stata predisposta.
$
LC_ALL=en_US luit -encoding "ISO 8859-1" mio_programma
[Invio]
In questo caso, si rende esplicita la codifica con cui deve funzionare il programma mio_programma, attraverso l'opzione -encoding, secondo la notazione prevista da luit. Per la precisione, si può ottenere l'elenco di tutte le codifiche previste, secondo la notazione di luit, con l'opzione -list:
$
luit -list
[Invio]
Si osservi che quando ci si collega a un elaboratore remoto, nel quale non è prevista una configurazione locale con una codifica UTF-8, è necessario usare luit come già mostrato, per esempio così:
$
LC_ALL=en_US luit -encoding "ISO 8859-1" ssh nodo
[Invio]
Nell'esempio si può riconoscere l'uso del programma ssh, ovvero di Secure Shell.
Si osservi che negli esempi è stata usata la variabile di ambiente LC_ALL, perché questa prende il sopravvento su tutte le variabili LC_* e su LANG. |
Radovan Garabík, Step by step introduction to switching your debian installation to utf-8 encoding
<http://melkor.dnp.fmph.uniba.sk/~garabik/debian-utf8/HOWTO/howto.html>
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) GNU core utilities GNU GPL
2) GNU core utilities GNU GPL
3) Ncurses software libero con licenza speciale FSF
4) Ncurses software libero con licenza speciale FSF
5) Per terminare l'utilizzo di mc si può utilizzare la sequenza [Esc][0] se non funziona il tasto [F10].
6) Ncurses software libero con licenza speciale FSF
7) Linux console tools GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome gestione_della_console_gnu_linux_e_dei_terminali_a_caratteri.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]