[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]
Diversi programmi che funzionano in modo interattivo mostrando un invito all'inserimento dei comandi (un prompt) e offrendo una riga di comando, sfruttano la libreria Readline (1) per la gestione di uno storico dei comandi e per offrire altre funzionalità come il completamento automatico.
La libreria Readline è sottoposta alle condizioni della licenza GNU GPL, pertanto i programmi che la incorporano vengono distribuiti alle stesse condizioni.
Questa libreria offre funzionalità così raffinate che spesso chi utilizza programmi interattivi che se ne avvalgono, si limita a sfruttarne una porzione minima. Questo capitolo offre solo una visione limitata delle funzionalità disponibili; chi desidera approfondire lo studio può cercare la sua documentazione che potrebbe essere disponibile nella pagina di manuale readline(3), o in sua mancanza nella documentazione della shell Bash, che potrebbe essere disponibile come info bash oppure bash(1).
Nel capitolo vengono mostrate diverse tabelle che descrivono l'uso dei comandi comuni disponibili; si osservi però che molte cose possono essere ridefinite attraverso la configurazione che avviene normalmente attraverso il file ~/.readline
.
Quando la configurazione della libreria Readline è realizzata nel modo corretto, i tasti freccia consentono di scorrere all'interno dello storico e all'interno di un comando per consentirne la modifica, così come altri tasti di spostamento funzionano in modo intuitivo; diversamente sono disponibili delle combinazioni di tasti standard, secondo lo schema delle tabelle successive.
|
|
|
Durante l'inserimento di un comando, si può usare il tabulatore, [Tab], per ottenere il completamento di questo in base a qualche criterio, che dipende dall'applicazione in cui la libreria viene usata.
Generalmente, la pressione del tasto [Tab] porta al completamento di qualcosa, se il contesto non permette di avere dubbi, altrimenti il completamento può essere parziale o imposibile. Quando il completamento è ambiguo, la ripetizione del comando produce la visualizzazione dell'elenco delle alternative disponibili.
La configurazione usata dalla libreria Readline avviene normalmente attraverso il file /etc/inputrc
in modo generale, mentre per i singoli utenti attraverso il file ~/.inputrc
.
La cosa più comune che viene definita nel file di configurazione è l'uso di tasti per lo spostamento del cursore e per lo scorrimento nello storico, oltre alle combinazioni già previste. L'esempio seguente si riferisce alla configurazione necessaria per l'uso ottimale di una console virtuale su un elaboratore con architettura i386:
|
Come si intuisce, non sono stati abbinati i tasti [freccia sinistra] e [freccia destra], che in condizioni normali funzionano al pari delle combinazioni [Ctrl b] e [Ctrl f].
Il programma cle, (2) ovvero Command line editor, è un involucro per i programmi interattivi che funzionano attraverso una riga di comando, ma non dispongono di funzionalità simili a quelle offerte dalla libreria Readline:
cle [opzioni] programma [argomenti] |
In pratica, si usa cle per avviare un altro programma, che può avere bisogno dei suoi argomenti, controllando l'inserimento dei dati provenienti dallo standard input.
Si può tentare di capire cosa fa questo programma con un esempio realizzato con comandi comuni:
$
tee prova
[Invio]
Questo comando, che per il momento non si avvale di cle, riceve i dati dallo standard input, li inserisce tali e quali nel file prova
e li emette nuovamente attraverso lo standard output:
Ciao,
[Invio]
Ciao, |
come stai?
[Invio]
come stai? |
[Ctrl d]
Al termine il file prova
contiene esattamente il testo:
|
Durante l'inserimento del testo, non è possibile correggere la riga se non a partire dalla cancellazione dalla fine; con l'aiuto di cle si ottiene tutta la potenza della libreria Readline, compresa la gestione dello storico:
$
cle tee prova
[Invio]
...
In questo caso, lo storico viene accumulato precisamente nel file ~/.tee_history
, pertanto si intuisce che controllando un altro programma si ottiene un file con il prefisso che richiama il nome dello stesso.
Bisogna tenere presente però che cle non è perfetto per tutte le circostanze: prima di tutto è necessario che il programma che viene controllato riceva i dati dallo standard input, perché se usa una tecnica differente, il meccanismo non può funzionare; inoltre, se il programma controllato mostra un invito, quando si scorre lo storico questo viene eliminato, perché cle non ne è consapevole.
Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>
1) Readline GNU GNU GPL
Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome libreria_readline.htm
[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]