BASH(1) BASH(1)
bash - GNU Bourne-Again SHell
bash [opzioni] [file]
Bash is Copyright (C) 1989-2005 by the Free Software Foundation, Inc.
Bash
un interprete di linguaggio di comandi sh-compatibile che esegue i
comandi letti dallo standard input o da un file. Bash inoltre incor-
pora utili caratteristiche delle shell Korn e C (ksh e csh).
Bash
progettata per essere un'implementazione conforme alla parte Shell and
Utilities della IEEE POSIX specification (IEEE Standard 1003.1). Bash
pu essere configurata per essere conforme allo standard POSIX per
default.
In aggiunta alle opzioni della shell di un solo carattere documentate
nella descrizione del comando incorporato set, quando invocata bash
interpreta le seguenti opzioni:
-c stringa
Se presente l'opzione -c, allora i comandi sono letti da
stringa. Se vi sono argomenti dopo la stringa, essi sono
assegnati ai parametri posizionali, partendo da $0.
-i Se presente l'opzione -i, la shell interattiva.
-l fa s che bash funzioni come se fosse stata invocata come una
shell di login (si veda INVOCAZIONE pi avanti).
-r Se l'opzione -r
presente, la shell diventa ristretta (si veda SHELL
RISTRETTA pi avanti)
-s Se presente l'opzione -s, o se non rimane alcun argomento
dopo che sono state esaminate le opzioni, i comandi sono
letti dallo standard input. Quest'opzione permette di
impostare i parametri posizionali quando si invoca una shell
interattiva.
-D Una lista di tutte le stringhe fra virgolette preceduta da $
stampata sullo standard output. Queste sono le stringhe che
sono soggette a traduzione di linguaggio quando la localiz-
zazione corrente non C o POSIX. Questo implica l'opzione
-n; nessun comando verr eseguito.
[-+]O [shopt_option]
shopt_option una delle opzioni di shell accettate dal
comando incorporato shopt (si veda COMANDI INCORPORATI DELLA
SHELL pi avanti). Se shopt_option presente, -O imposta il
valore di quella opzione; +O lo rimuove. Se shopt_option non
fornita, i nomi e i valori delle opzioni della shell
accettati da shopt sono stampati sullo standard output. Se
l'opzione di invocazione +O, l'output mostrato in un for-
mato riutilizzabile come input.
-- Un -- segna la fine delle opzioni e disabilita l'ulteriore
elaborazione di opzioni. Gli argomenti dopo il -- sono trat-
tati come nomi di file e argomenti. Un argomento di -
equivalente a --.
Bash interpreta anche un certo numero di opzioni multicarattere.
Queste opzioni devono apparire nella riga di comando prima delle
opzioni a carattere singolo.
--debugger
Dispone l'esecuzione del debugger profile prima dell'avvio della
shell. Attiva la modalit estesa di debug (si veda la
descrizione dell'opzione extdebug al comando incorporato shopt
pi avanti) e il tracciamento delle funzioni di shell (si veda la
descrizione dell'opzione -o functrace al comando incorporato set
pi avanti).
--dump-po-strings
Equivalente a -D, ma l'output nel formato file GNU gettext po
(portable object).
--dump-strings
Equivalente a -D.
--help Mostra sullo standard output un messaggio sull'uso ed esce con
stato di uscita 0.
--init-file file
--rcfile file
Esegue comandi letti da file invece che dal file personale di
inizializzazione standard ~/.bashrc se la shell interattiva (si
veda INVOCAZIONE pi avanti).
--login
Equivalente a -l
--noediting
Non usa la libreria GNU readline per leggere righe di comando
quando la shell interattiva.
--noprofile
Non legge n il file di inizializzazione generico di sistema
/etc/profile n alcuno dei file personali di inizializzazione
~/.bash_profile, ~/.bash_login, o ~/.profile. Per default bash
legge questi file quando invocata come shell di login (si veda
INVOCAZIONE pi avanti).
--norc Non legge n esegue il file personale di inizializzazione
~/.bashrc se la shell interattiva. Questa opzione attiva per
default se la shell invocata come sh.
--posix
Cambia il comportamento di bash, dove le operazioni di default
differiscono dallo standard POSIX, in modo da corrispondere alla
(modalit posix) standard.
--ristretta
La shell diventa ristretta (si veda SHELL RISTRETTA pi avanti).
--verbose
Equivalente a -v.
--version
Mostra informazioni sulla versione di questa istanza di bash
sullo standard output ed esce con stato d'uscita 0.
Se rimangono argomenti dopo che sono state elaborate le opzioni, e n
l'opzione -c n l'opzione -s sono state specificate, il primo argomento
si assume sia il nome di un file che contiene dei comandi di shell. Se
bash
invocata in questo modo, $0
impostato al nome del file, e i parametri posizionali sono impostati
agli argomenti che lo seguono. Bash legge ed esegue comandi da questo
file, poi esce. Lo stato d'uscita di Bash lo stato d'uscita
dell'ultimo comando eseguito nello script. Se non eseguito alcun
comando lo stato d'uscita 0. Viene fatto un primo tentativo per
aprire il file nella directory corrente, e se non viene trovato il file
la shell cerca le directory in PATH per lo script.
Una shell di login una in cui il cui primo carattere dell'argomento
zero un -, o una che venga avviata con l'opzione --login.
Una shell detta interattiva se stata avviata senza argomenti diversi
dalle opzioni e senza l'opzione -c i cui standard input e standard
error sono entrambi inviati a terminali (come determinato da
isatty(3)), o se viene avviata con l'opzione -i . PS1
impostato e $- include i se bash
interattiva, permettendo a uno script di shell o a un file di inizial-
izzazione di verificare questo stato.
I seguenti paragrafi descrivono come bash esegue i suoi file di
inizializzazione. Se qualcuno dei file esiste ma non pu essere letto
bash riporta un errore. Le tilde sono espanse nei nomi di file come
descritto pi avanti sotto Espansione della tilde nella sezione ESPAN-
SIONE .
Quando bash
invocata come una shell di login interattiva, o come una shell non
interattiva con l'opzione --login, prima legge ed esegue comandi dal
file /etc/profile, se quel file esiste. Dopo aver letto quel file,
cerca ~/.bash_profile, ~/.bash_login, e ~/.profile, in quest'ordine, e
legge ed esegue comandi dal primo file che trova e che leggibile.
L'opzione --noprofile pu essere usata quando si avvia la shell per
inibire questo comportamento.
Quando una shell di login esce, bash legge ed esegue comandi dal file
~/.bash_logout, se esiste.
Quando una shell interattiva che non una shell di login avviata, bash
legge ed esegue comandi da ~/.bashrc, se quel file esiste. Ci pu
essere inibito utilizzando l'opzione --norc . L'opzione --rcfile file
forza bash a leggere ed eseguire comandi da file invece che da
~/.bashrc.
Quando bash
avviata in modo non interattivo, per eseguire uno script di shell, per
esempio, cerca la variabile di ambiente BASH_ENV , espande il suo val-
ore se questo esiste, e utilizza il valore espanso come il nome di un
file da leggere ed eseguire. Bash si comporta come se fossero stati
eseguiti i seguenti comandi:
if [ -n "$BASH_ENV" ]; then . "$BASH_ENV"; fi
ma il valore della variabile PATH non usato per cercare il nome del
file.
Se bash
invocata col nome sh, tenta di imitare il comportamento di inizializ-
zazione delle vecchie versioni di sh il pi fedelmente possibile, e allo
stesso tempo si conforma allo standard POSIX. Quando invocata come una
shell di login interattiva, o una shell interattiva con l'opzione
--login, per prima cosa tenta di leggere ed eseguire i comandi da
/etc/profile e ~/.profile, in quest'ordine. L'opzione --noprofile pu
essere usata per inibire questo comportamento. Quando invocata come
una shell interattiva col nome sh, bash cerca la variabile ENV, espande
il suo valore se questo definito, e usa il valore espanso come nome di
un file da leggere ed eseguire. Poich una shell invocata come sh non
tenta di leggere ed eseguire comandi da qualsiasi altro file di
inizializzazione, l'opzione --rcfile non ha alcun effetto. Una shell
non interattiva invocata col nome sh non tenta di leggere nessun altro
file di inizializzazione. Quando invocata come sh, bash lavora in
modalit posix dopo che i file di inizializzazione sono stati letti.
Quando bash
avviata in modalit posix come con l'opzione --posix della riga di
comando, essa segue lo standard POSIX per i file di inizializzazione.
In questa modalit la shell interattiva espande la variabile ENV e i
comandi sono letti ed eseguiti dal file il cui nome il valore espanso.
Nessun altro file di inizializzazione viene letto.
Bash cerca di determinare quando la si sta eseguendo dal demone di
shell remota, usualmente rshd. Se bash determina che viene eseguito da
rshd, legge ed esegue comandi da ~/.bashrc, se quel file esiste ed
leggibile. Non fa questo se invocata come sh. L'opzione --norc pu
essere usata per inibire questo comportamento, e l'opzione --rcfile pu
essere usata per forzare la lettura di un altro file, ma rshd solita-
mente non invoca la shell con queste opzioni o non permette che siano
specificate.
Se la shell avviata con l'id effettivo dell'utente (gruppo) non uguale
all'id reale dell'utente (gruppo), e non viene fornita l'opzione -p,
nessun file di inizializzazione viene letto, le funzioni di shell non
vengono ereditate dall'ambiente, la variabile SHELLOPTS , se esiste
nell'ambiente, viene ignorata, e l'id effettivo dell'utente impostata
all'id reale dell'utente. Se l'opzione -p fornita all'invocazione, il
comportamento all'avvio il medesimo, ma l'id effettivo dell'utente non
viene reimpostato.
Le seguenti definizioni sono usate nel resto di questo documento.
blank Uno spazio o carattere di tabulazione (tab).
parola Una sequenza di caratteri considerata come una singola unit
dalla shell. Nota anche come token.
nome Una parola che consiste solo di caratteri alfanumerici e trat-
tini di sottolineatura, e comincia con un carattere alfabetico o
un trattino di sottolineatura. Definita anche un identifica-
tore.
metacarattere
Un carattere che, quando non quotato, separa le parole. Uno dei
seguenti:
| & ; ( ) < > spazio tab
operatore di controllo
Un token che realizza una funzione di controllo.
uno dei seguenti simboli:
|| & && ; ;; ( ) | <newline>
Le parole riservate sono parole che hanno un significato speciale per
la shell. Le seguenti parole sono riconosciute come riservate quando
non quotate e sono o la prima parola di un comando semplice (si veda
GRAMMATICA DELLA SHELL pi avanti) o la terza parola di un comando case
o di un comando for :
! case do done elif else esac fi for function if in select then until
while { } time [[ ]]
Comandi semplici
Un comando semplice una sequenza opzionale di assegnamenti di vari-
abile seguita da parole, separate da blank, e ridirezioni, e terminata
da un operatore di controllo. La prima parola specifica il comando che
deve essere eseguito, ed passata come argomento zero. Le rimanenti
parole sono passate come argomenti al comando invocato.
Il valore di ritorno di un comando semplice il suo stato di uscita, o
128+n se il comando fatto terminare da un segnale n.
Pipeline
Una pipeline una sequenza di uno o pi comandi separati dal carattere
|. Il formato per una pipeline :
[time [-p]] [ ! ] comando [ | comando2 ... ]
Lo standard output di comando
connesso attraverso una pipe allo standard input di comando2. Questa
connessione effettuata prima di qualsiasi ridirezione specificata dal
comando (si veda RIDIREZIONE pi avanti).
Lo stato di ritorno di una pipeline lo stato d'uscita dell'ultimo
comando, a meno che l'opzione pipefail non sia abilitata. Se pipefail
abilitata, lo stato di ritorno della pipeline il valore dell'ultimo
comando (il pi a destra) che esce con uno stato diverso da zero o zero
se tutti i comandi escono con successo. Se la parola riservata ! pre-
cede una pipeline, lo stato d'uscita di quella pipeline la negazione
logica dello stato d'uscita come sopra descritto. La shell aspetta che
tutti i comandi nella pipeline terminino prima di ritornare un valore.
Se la parola riservata time precede una pipeline, quando la pipeline
termina vengono notificati i tempi impiegati dall'utente e dal sistema
per la sua esecuzione. L'opzione -p cambia il formato di output con
quello specificato da POSIX. La variabile TIMEFORMAT pu essere
impostata a una stringa di formato che specifica come le informazioni
sui tempi dovranno essere mostrate; si veda la descrizione di TIMEFOR-
MAT sotto Variabili di shell pi avanti.
Ogni comando in una pipeline eseguito come un processo separato (cio
in una subshell).
Liste
Una lista una sequenza di una o pi pipeline separate da uno degli
operatori ;, &, &&, o ||, e facoltativamente fatta terminare da uno fra
;, &, o <newline>.
Di questi operatori di lista, && e || hanno uguale precedenza, seguiti
da ; e &, che hanno uguale precedenza.
Per delimitare dei comandi pu essere usata in una lista una sequenza di
uno o pi newline al posto di un punto e virgola.
Se un comando terminato dall'operatore di controllo &, la shell esegue
il comando in background in una subshell. La shell non aspetta che il
comando finisca, e lo stato di ritorno 0. I comandi separati da un ;
sono eseguiti sequenzialmente; la shell aspetta che ogni comando, in
sequenza, termini. Lo stato di ritorno lo stato d'uscita dell'ultimo
comando eseguito.
Gli operatori di controllo && e || denotano liste AND e liste OR,
rispettivamente. Una lista AND ha la forma
comando1 && comando2
comando2
eseguito se, e solo se, comando1 ritorna uno stato d'uscita di zero.
Una lista OR ha la forma
comando1 || comando2
comando2
eseguito se e solo se comando1 ritorna uno stato d'uscita diverso da
zero. Lo stato di ritorno di liste AND e OR lo stato d'uscita
dell'ultimo comando eseguito nella lista.
Comandi composti
Un comando composto uno dei seguenti:
(lista)
lista eseguita in un ambiente di subshell (si veda AMBIENTE DI
ESECUZIONE DEI COMANDI pi avanti). Assegnamenti di variabile e
comandi incorporati che influenzano l'ambiente della shell non
hanno effetto dopo che il comando
completato. Lo stato di ritorno lo stato d'uscita di lista.
{ lista; }
lista semplicemente eseguita nell'ambiente di shell corrente.
lista deve essere fatta terminare con un newline o un punto e
virgola. Questo conosciuto come group command. Lo stato di
ritorno lo stato d'uscita di lista. Da notare che diversamente
dai metacaratteri ( e ), { e } sono parole riservate e devono
essere usati quando una parola riservata ammissibile. Poich
esse non causano una divisione delle parole, devono essere sepa-
rate da lista con uno spazio.
((espressione))
L'espressione valutata in accordo con le regole descritte pi
avanti sotto VALUTAZIONE ARITMETICA. Se il valore dell'espres-
sione diverso da zero, lo stato di ritorno 0; altrimenti lo
stato di ritorno 1. Questo esattamente equivalente a let
"espressione".
[[ espressione ]]
Ritorna uno stato di 0 o 1 a seconda della valutazione della
espressione condizionale espressione. Le espressioni sono com-
poste dalle primitive descritte pi avanti sotto ESPRESSIONI CON-
DIZIONALI. La suddivisione in parole e l'espansione del nome di
percorso non sono effettuate sulle parole fra la [[ e ]]; espan-
sione della tilde, espansione di parametro e di variabile,
espansione aritmetica, sostituzione di comando, sostituzione di
processo, e rimozione degli apici vengono effettuate. Gli oper-
atori condizionali come -f devono essere senza apici per essere
riconosciuti come primitive.
Quando vengono usati gli operatori == e !=, la stringa alla
destra dell'operatore considerato un modello ed confrontata in
accordo con le regole descritte pi avanti sotto Modelli di
ricerca. Se l'opzione di shell nocasematch
abilitata, il confronto effettuato senza distinzione fra
maiuscole e minuscole nei caratteri alfabetici. Il valore di
ritorno 0 se la stringa corrisponde (==) o non corrisponde (!=)
al modello, e 1 negli altri casi. Ogni parte del modello pu
essere quotato per forzarlo a essere individuato come una
stringa.
Un ulteriore operatore binario, =~, disponibile con la stessa
precedenza di == e !=. Quando viene usato, la stringa alla
destra dell'operatore considerata un'espressione regolare
estesa e confrontata come tale (come in regex(3)). Il valore di
ritorno 0 se la stringa corrisponde al modello, e 1 negli altri
casi. Se l'espressione regolare sintatticamente scorretta, il
valore di ritorno dell'espressione condizionale 2. Se
l'opzione di shell nocasematch
abilitata, il confronto effettuato senza distinguere le maius-
cole dalle minuscole nei caratteri alfabetici. Substringhe
individuate tramite subespressioni fra parentesi all'interno
dell'espressione regolare sono salvate nella variabile array
BASH_REMATCH. L'elemento di BASH_REMATCH con indice 0 la
porzione della stringa corrispondente all'intera espressione
regolare. L'elemento di BASH_REMATCH con indice n la porzione
della stringa corrispondente alla subespressione fra parentesi
nth.
Le espressioni possono essere combinate usando i seguenti opera-
tori, elencati in ordine inverso di precedenza:
( espressione )
Ritorna il valore di espressione. Questo pu essere usato
per modificare la normale precedenza degli operatori.
! espressione
Vero se espressione
falsa.
espressione1 && espressione2
Vero se entrambe espressione1 e espressione2 sono vere.
espressione1 || espressione2
Vero se almeno una fra espressione1 o espressione2
vera.
Gli operatori && e || non valutano espressione2 se il valore di
espressione1 sufficiente per determinare il valore di ritorno
dell'intera espressione condizionale.
for nome [ in parola; ] do lista ; done
La lista di parole che seguono in espansa, generando una lista
di elementi. La variabile nome impostata, di volta in volta, a
ciascun elemento di questa lista e lista eseguita ogni volta.
Se la in parola omessa, il comando for esegue lista una volta
per ogni parametro posizionale esistente (si veda PARAMETRI pi
avanti). Lo stato di ritorno lo stato d'uscita dell'ultimo
comando eseguito. Se l'espansione degli elementi che seguono in
risultano in una lista vuota, non eseguito alcun comando, e lo
stato di ritorno 0.
for (( expr1 ; expr2 ; expr3 )) ; do lista ; done
Prima viene valutata l'espressione aritmetica expr1 in accordo
con le regole descritte pi avanti sotto VALUTAZIONE ARITMETICA.
Viene quindi valutata ripetutamente l'espressione aritmetica
expr2 finch non assume il valore zero. Ogni volta che expr2
diverso da zero, lista viene eseguita e l'espressione aritmetica
expr3 viene valutata. Se qualche espressione omessa, si sup-
pone che abbia il valore 1. Il valore di ritorno lo stato
d'uscita dell'ultimo comando in lista che eseguito, o falso se
una qualsiasi delle espressioni non valida.
select nome [ in parola; ] do lista ; done
La lista di parole che segue in espansa, generando una lista di
elementi. L'insieme delle parole espanse stampato sullo stan-
dard error, ognuna preceduta da un numero. Se la in parola
omessa, sono stampati i parametri posizionali (si veda PARAMETRI
pi avanti). poi mostrato il prompt PS3 ed letta una riga dallo
standard input. Se la riga contrassegnata da un numero cor-
rispondente a una delle parole mostrate, allora il valore di
nome
impostato a quella parola. Se la riga vuota, le parole e il
prompt sono mostrati di nuovo. Se viene immesso EOF [CTRL-D],
il comando termina. Qualsiasi altro valore letto fa s che nome
sia impostato al valore nullo. La riga letta salvata nella
variabile REPLY. La lista
eseguita dopo ciascuna selezione fino a che non sia eseguito un
comando break . Lo stato d'uscita di select
lo stato d'uscita dell'ultimo comando eseguito in lista, o zero
se nessun comando stato eseguito.
case parola in [ [(] modello [ | modello ] ... ) lista ;; ] ... esac
Un comando case prima espande parola, e prova a confrontarla, di
volta in volta, con ognuno dei modelli, usando le stesse regole
di confronto dell'espansione di percorso (si veda Espansione di
percorso pi avanti). La parola espansa usando espansione della
tilde, espansione di parametro e di variabile, sostituzione
aritmetica, sostituzione di comando, sostituzione di processo e
rimozione dei simboli di quotatura. Ogni modello esaminato
espanso usando espansione della tilde, espansione di parametro e
di variabile, sostituzione aritmetica, sostituzione di comando e
sostituzione di processo. Se l'opzione di shell nocasematch
abilitata, il confronto effettuato senza distinzione fra
maiuscole e minuscole nei caratteri alfabetici. Quando viene
trovata una corrispondenza, viene eseguita la lista a essa
abbinata. Dopo il primo confronto riuscito, non ne viene ten-
tato nessun altro. Lo stato d'uscita 0 se nessun modello cor-
risponde. Altrimenti, esso lo stato d'uscita dell'ultimo
comando eseguito in lista.
if lista then lista [ elif lista then lista ] ... [ else lista ] fi
La lista if
eseguita. Se il suo stato d'uscita 0, eseguita la lista dopo
then. Altrimenti, eseguita a turno ciascuna lista dopo elif, e
se il suo stato d'uscita 0, eseguita la corrispondente lista
dopo then e il comando termina. Altrimenti, se presente, ese-
guita, la lista dopo else. Lo stato d'uscita lo stato d'uscita
dell'ultimo comando eseguito, o zero se nessuna delle condizioni
considerate risultata essere vera.
while lista do lista done
until lista do lista done
Il comando while esegue ripetutamente la lista dopo do finch
l'ultimo comando in lista ritorna uno stato di uscita di zero.
Il comando until identico al comando while, con la sola dif-
ferenza che il risultato del test negato; la lista do
eseguita finch l'ultimo comando in lista ritorna uno stato
d'uscita diverso da zero. Lo stato d'uscita dei comandi while e
until
lo stato d'uscita dell'ultimo comando eseguito nella lista do o
zero se non ne stato eseguito alcuno.
Definizioni della funzione di shell
Una funzione di shell un oggetto che viene chiamato come un comando
semplice ed esegue un comando composto con una nuova serie di parametri
posizionali. Le funzioni di shell sono dichiarate in questo modo:
[ function ] nome () comando-composto [ridirezione]
Qui sopra si definisce una funzione chiamata nome. La parola
riservata function opzionale. Se la parola riservata function
fornita, le parentesi sono opzionali. Il corpo della funzione
il comando composto comando-composto (si veda Comandi composti
sopra). Questo comando usualmente una lista di comandi fra { e
}, ma potrebbe essere qualsiasi comando elencato in precedenza,
sotto Comandi composti. comando-composto eseguito ogni volta
che nome specificato come nome di un comando semplice. Ogni
ridirezione (si veda RIDIREZIONI pi avanti) specificata quando
una funzione definita viene effettuata quando quella funzione
viene eseguita. Lo stato d'uscita di una definizione di fun-
zione 0 tranne quando si verifica un errore di sintassi o una
funzione in sola lettura con lo stesso nome gi esistente.
Quando eseguita, lo stato d'uscita di una funzione lo stato
d'uscita dell'ultimo comando eseguito nel corpo. (si veda FUN-
ZIONI pi avanti).
In una shell non interattiva, o in una shell interattiva in cui
l'opzione interactive-comments del comando incorporato shopt
abilitata (si veda COMANDI INCORPORATI DI SHELL pi avanti), una parola
che inizia con # fa s che la parola e tutti i rimanenti caratteri di
quella riga siano ignorati. Una shell interattiva senza l'opzione
interactive-comments abilitata non permette i commenti. L'opzione
interactive_comments
attiva per default nelle shell interattive.
La Quotatura usata per togliere il significato speciale, per la shell,
di certi caratteri o parole. La quotatura pu essere usata per
disabilitare il trattamento speciale per i caratteri speciali, per
impedire che le parole riservate siano riconosciute come tali, e per
prevenire l'espansione di parametro.
Ciascuno dei metacaratteri elencati prima sotto DEFINIZIONI ha un sig-
nificato speciale per la shell e deve essere quotato se esso deve rapp-
resentare se stesso.
Quando vengono usati i servizi per l'espansione della cronologia dei
comandi (si veda ESPANSIONE DELLA CRONOLOGIA pi avanti), il carattere
di espansione della cronologia, in genere !, dev'essere quotato per
prevenire l'espansione della cronologia.
Vi sono tre meccanismi di quotatura: caratteri di protezione (escape),
apostrofi e virgolette.
Un backslash (\) non quotato il carattere di protezione. Esso
attribuisce il valore letterale al successivo carattere, con
l'eccezione di <newline>. Se vi una coppia \<newline> , e il back-
slash non quotato, il \<newline>
trattato come una continuazione di riga (cio, rimosso dal flusso di
input e viene realmente ignorato).
Racchiudendo dei caratteri in apostrofi si conserva il valore letterale
di ogni carattere all'interno degli apostrofi. Un apostrofo non pu
essere inserito tra apostrofi, nemmeno preceduto da un backslash.
Racchiudere caratteri tra virgolette conserva il valore letterale di
tutti i caratteri all'interno, con le eccezioni di $, `, \, e, quando
l'espansione della cronologia abilitata, !. I caratteri $ e ` conser-
vano il loro significato speciale anche tra virgolette. Il backslash
mantiene il suo significato speciale solo quando seguito da uno dei
seguenti caratteri: $, `, ", \ o <newline>. Le virgolette possono
essere contenute in una stringa fra virgolette facendole precedere da
un backslash. Se abilitata, l'espansione della cronologia viene effet-
tuata a meno che un ! tra virgolette non venga protetto da un back-
slash. Il backslash che precede il ! non viene rimosso.
I parametri speciali * e @ hanno un significato speciale quando sono
tra virgolette (si veda PARAMETRI pi avanti).
Parole della forma $'stringa' sono trattate in modo speciale. La
parola espande in stringa, coi caratteri protetti da un backslash sos-
tituiti come specificato dallo standard ANSI C. Le sequenze di pro-
tezione tramite backslash, se presenti, sono decodificate come segue:
\a avviso (segnale acustico)
\b backspace
\e un carattere di escape
\f salto pagina
\n codice di fine riga (newline)
\r carriage return
\t tabulazione orizzontale
\v tabulazione verticale
\\ backslash
\' apostrofo
\nnn il carattere a otto bit il cui valore il valore ottale
nnn (da una a tre cifre)
\xHH il carattere a otto bit il cui valore il valore esadeci-
male HH (una o due cifre esadecimali)
\cx un carattere control-x
Il risultato espanso racchiuso fra apostrofi come se il segno del dol-
laro non fosse presente.
Una stringa fra virgolette preceduta dal segno del dollaro ($) causa la
traduzione della stringa conformemente alla localizzazione corrente.
Se la localizzazione corrente C o POSIX, il segno del dollaro viene
ignorato. Se la stringa tradotta e sostituita, la sostituzione fra
virgolette.
Un parametro
una entit che contiene valori. Pu essere un nome, un numero o uno dei
caratteri speciali elencati pi avanti sotto Parametri speciali. Una
variabile
un parametro indicato da un nome. Una variabile ha un valore e zero o
pi attributi. Gli attributi sono assegnati utilizzando il comando
incorporato declare (si veda declare pi avanti in COMANDI INCORPORATI
DI SHELL).
Un parametro impostato se a esso stato assegnato un valore. La
stringa nulla un valore valido. Una volta che una variabile
impostata, essa pu essere rimossa solo usando il comando incorporato
unset (si veda COMANDI INCORPORATI DELLA SHELL pi avanti).
Una variabile pu essere assegnata da una istruzione della forma
nome=[valore]
Se valore
omesso, alla variabile assegnata la stringa nulla. Tutti i valori
sono sottoposti a espansione della tilde, espansione di parametro e
variabile, sostituzione di comando, espansione aritmetica e rimozione
dei caratteri di quotatura (si veda ESPANSIONE pi avanti). Se la vari-
abile ha il suo attributo integer impostato, allora valore
valutato come un'espressione aritmetica anche se l'espansione del
$((...)) non utilizzata (si veda Espansione aritmetica pi avanti). La
suddivisione in parole non effettuata, con l'eccezione di "$@" come
spiegato pi avanti sotto Parametri speciali. L'espansione di percorso
non effettuata. Le istruzioni di assegnamento possono anche apparire
come argomenti per i comandi incorporati alias, declare, typeset,
export, readonly e local .
Nel contesto in cui un'istruzione di assegnamento sta assegnando un
valore a una variabile di shell o a un indice di array, l'operatore +=
pu essere usato per accodare o aggiungere al precedente valore della
variabile. Quando += applicato a una variabile per la quale l'attrib-
uto integer stato impostato, valore valutato come un'espressione
aritmetica e aggiunto al valore corrente della variabile, che a sua
volta valutata. Quando += applicato a una variabile array usando
assegnamenti composti (si veda Array pi avanti), il valore della vari-
abile non rimosso (com' quando si usa =), e nuovi valori sono aggiunti
alla fine dell'array iniziando dal massimo indice di array aumentato di
uno. Quando applicata a una variabile valutata come stringa, valore
espanso e accodato al valore della variabile.
Parametri posizionali
Un parametro posizionale
un parametro il cui nome indicato da una o pi cifre, diverse dalla
singola cifra 0. I parametri posizionali sono assegnati dagli argo-
menti della shell quando questa invocata, e possono essere riassegnati
usando il comando incorporato set . I parametri posizionali non pos-
sono essere assegnati con istruzioni di assegnamento. I parametri
posizionali sono temporaneamente sostituiti quando eseguita una fun-
zione di shell (si veda FUNZIONI pi avanti).
Quando si espande un parametro posizionale composto da pi di una sola
cifra, esso deve essere racchiuso tra parentesi graffe (si veda ESPAN-
SIONE pi avanti).
Parametri speciali
La shell tratta molti parametri in modo speciale. Questi parametri
possono solo essere referenziati; la loro modifica non permessa.
* Si espande nei parametri posizionali, a partire dal primo.
Quando l'espansione avviene tra virgolette, si espande in una
singola parola contenente il valore di ciascun parametro
separato dagli altri dal primo carattere della variabile spe-
ciale IFS. Cio, ``$*'' equivalente a ``$1c$2c...'', dove c
il primo carattere del valore della variabile IFS. Se IFS
viene annullato, i parametri sono separati da spazi. Se IFS
nulla, i parametri sono uniti senza alcun separatore.
@ Si espande nei parametri posizionali, a partire dal primo.
Quando l'espansione avviene tra virgolette, ogni parametro si
espande in una parola separata. Cio, "$@" equivalente a "$1"
"$2" ... Se l'espansione fra virgolette avviene all'interno di
una parola, l'espansione del primo parametro unita con la parte
iniziale della parola originale, e l'espansione dell'ultimo
parametro unita con la parte finale della parola originale.
Quando non vi alcun parametro posizionale, "$@" e $@ si espan-
dono come stringa nulla (cio, sono rimossi).
# Si espande nel numero di parametri posizionali espresso come
numero decimale.
? Si espande nello stato della pipeline eseguita pi recentemente
senza rilasciare il controllo del terminale.
- Si espande nei flag di opzione correnti come specificato in base
alla chiamata, dal comando incorporato set, o in quelli impo-
stati dalla shell stessa (come l'opzione -i ).
$ Si espande nell'ID di processo della shell. In una subshell (),
si espande nell'ID di processo della shell corrente, non in
quello della subshell.
! Si espande nell'ID di processo del comando in background (asin-
crono) pi recentemente eseguito.
0 Si espande nel nome della shell o script di shell. Questo
impostato alla inizializzazione della shell. Se bash
chiamata con un file di comandi, $0
impostato al nome di quel file. Se bash
avviata con l'opzione -c, allora $0
impostato al primo argomento dopo la stringa che deve essere
eseguita, se presente. Altrimenti, impostato al percorso usato
per chiamare bash, come dato dall'argomento zero.
_ All'avvio della shell, impostato al nome di percorso assoluto
usato per invocare la shell o lo script di shell che eseguito
come passato nell'ambiente o nella lista di argomenti. Succes-
sivamente, si espande nell'ultimo argomento del precedente
comando, dopo l'espansione.
anche impostato al nome completo usato per invocare ogni
comando eseguito e messo nell'ambiente esportato verso quel
comando. Mentre si controlla la posta, questo parametro con-
tiene il nome del file del messaggio attualmente in esame.
Variabili di shell
Le seguenti variabili sono impostate dalla shell:
BASH Si espande al nome completo usato per chiamare questa istanza di
bash.
BASH_ARGC
Una variabile di array i cui valori sono il numero di parametri
in ogni frame del corrente stack delle chiamate di esecuzione di
bash. Il numero di parametri della subroutine corrente (fun-
zione di shell o script eseguito con . o source) in cima allo
stack. Quando viene eseguita una subroutine, il numero di
parametri passati
messo in cima a BASH_ARGC. La shell imposta BASH_ARGC solo
quando in modalit estesa di debugging (si veda la descrizione
dell'opzione extdebug per il comando incorporato shopt pi
avanti)
BASH_ARGV
Una variabile di array contenente tutti i parametri nel corrente
stack delle chiamate di esecuzione di bash. Il parametro finale
dell'ultima chiamata di subroutine in cima allo stack; il primo
parametro della chiamata iniziale in fondo. Quando una subrou-
tine viene eseguita, i parametri forniti sono messi in cima a
BASH_ARGV. La shell imposta BASH_ARGV solo quando in modalit
estesa di debugging (si veda la descrizione dell'opzione
extdebug al comando incorporato shopt pi avanti)
BASH_COMMAND
Il comando attualmente in esecuzione o in procinto di essere
eseguito, a meno che la shell non stia eseguendo un comando come
risultato di un'intercettazione di segnale (trap), nel qual caso
il comando in esecuzione al momento dell'intercettazione.
BASH_EXECUTION_STRING
L'argomento per il comando all'invocazione dell'opzione -c.
BASH_LINENO
Una variabile array i cui elementi sono i numeri di riga nei
file di origine corrispondenti a ciascun elemento di FUNCNAME.
${BASH_LINENO[$i]} il numero di riga nel file di origine dove
${FUNCNAME[$ifP]} stato chiamato. Il nome del file di origine
corrispondente ${BASH_SOURCE[$i]}. Usare LINENO per ottenere
il numero di riga corrente.
BASH_REMATCH
Una variabile array i cui elementi sono assegnati dall'operatore
binario =~ al comando condizionale [[. L'elemento con indice 0
la porzione della stringa che corrisponde all'intera espressione
regolare. L'elemento con indice n la porzione della stringa
che corrisponde alla n-sima subespressione fra parentesi. La
variabile in sola lettura.
BASH_SOURCE
Una variabile array i cui elementi sono i nomi dei file da cui
provengono gli elementi nella variabile array FUNCNAME.
BASH_SUBSHELL
Incrementato di uno ogni volta che una subshell o un ambiente di
subshell stato creato dalla shell originale. Il valore
iniziale 0.
BASH_VERSINFO
Una variabile array in sola lettura i cui elementi danno infor-
mazioni sulla versione di quest'istanza di bash. I valori
assegnati ai membri dell'array sono come segue:
BASH_VERSINFO[0] Il numero di versione principale(la
release).
BASH_VERSINFO[1] Il numero di versione secondario (la
versione).
BASH_VERSINFO[2] Il livello di aggiornamento tramite
patch.
BASH_VERSINFO[3] La versione di compilazione.
BASH_VERSINFO[4] Lo stato della release (ad es., beta1).
BASH_VERSINFO[5] Il valore di MACHTYPE.
BASH_VERSION
Si espande in una stringa che descrive la versione di questa
istanza di bash.
COMP_CWORD
Un indice in ${COMP_WORDS} della parola contenente la posizione
corrente del cursore. Questa variabile disponibile solo nelle
funzioni di shell invocate dalle risorse di completamento pro-
grammabile (si veda Completamento programmabile pi avanti).
COMP_LINE
La riga di comando corrente. Questa variabile disponibile solo
nelle funzioni di shell e nei comandi esterni invocati dai
servizi di completamento programmabile (si veda Completamento
programmabile pi avanti).
COMP_POINT
L'indice della posizione corrente del cursore relativa
all'inizio del comando corrente. Se la posizione corrente del
cursore alla fine del comando corrente, il valore di questa
variabile uguale a ${#COMP_LINE}. Questa variabile disponi-
bile solo nelle funzioni di shell e comandi esterni invocati dai
servizi di completamento programmabile (si veda Completamento
programmabile pi avanti).
COMP_WORDBREAKS
L'insieme dei caratteri che la libreria Readline tratta come
separatori di parola nell'effettuare il completamento di parola.
Se COMP_WORDBREAKS viene annullata, perde le sue propriet spe-
ciali, anche se poi reimpostata.
COMP_WORDS
Una variabile array (si veda Array pi avanti) che composta
dalle singole parole nella riga di comando corrente. Le parole
sono divise anche dai metacaratteri della shell poich l'analiz-
zatore della shell li considererebbe a parte. Questa variabile
disponibile solo nelle funzioni di shell e comandi esterni invo-
cati dai servizi di completamento programmabile (si veda Pro-
grammable Completion pi avanti).
DIRSTACK
Una variabile array (si veda Array pi avanti) che contiene il
contenuto corrente dello stack delle directory. Le directory
appaiono nello stack nell'ordine in cui sono mostrate dal
comando incorporato dirs . L'assegnamento agli elementi di
questa variabile array pu essere usato per modificare le direc-
tory gi nello stack, ma i comandi incorporati pushd e popd
devono essere usati per aggiungere e rimuovere directory.
L'assegnamento a questa variabile non cambia la directory cor-
rente. Se DIRSTACK viene annullata, perde le sue propriet spe-
ciali, anche se poi reimpostata.
EUID Espande all'ID-utente effettivo dell'utente corrente, inizializ-
zata all'avvio della shell. Questa variabile in sola lettura.
FUNCNAME
Una variabile array contenente i nomi di tutte le funzioni di
shell attualmente nello stack delle chiamate di esecuzione.
L'elemento con indice 0 il nome della funzione di shell attual-
mente in esecuzione. L'elemento pi in basso di tutti "main".
Questa variabile esiste solo quando in esecuzione una funzione
di shell. Assegnamenti a FUNCNAME non hanno alcun effetto e
ritornano uno stato di errore. Se FUNCNAME viene annullata,
perde le sue propriet speciali, anche se poi reimpostata.
GROUPS Una variabile array contenente l'elenco dei gruppi dei quali
membro l'utente corrente. Assegnamenti a GROUPS non hanno
alcun effetto e ritornano uno stato di errore. Se GROUPS viene
annullata, perde le sue propriet speciali, anche se poi reim-
postata.
HISTCMD
Il numero di cronologia, o indice nella lista della cronologia,
del comando corrente. Se HISTCMD viene annullata, perde le sue
propriet speciali, anche se poi reimpostata.
HOSTNAME
Automaticamente impostata al nome dell'host corrente.
HOSTTYPE
Automaticamente impostata a una stringa che univocamente
descrive il tipo di macchina su cui bash
in esecuzione. Il valore di default dipendente dal sistema.
LINENO Ogni volta che questo parametro referenziato, la shell gli
assegna un numero decimale che rappresenta il numero di sequenza
della riga corrente (partendo da 1) all'interno di uno script o
funzione. Quando non in uno script o funzione, non garantito
che il valore restituito sia significativo. Se LINENO viene
annullata, perde le sue propriet speciali, anche se poi reim-
postata.
MACHTYPE
Automaticamente impostata a una stringa che descrive completa-
mente il tipo di sistema sul quale bash
in esecuzione, nel formato standard GNU cpu-company-system. Il
valore di default dipendente dal sistema.
OLDPWD La precedente directory di lavoro come impostata dal comando cd.
OPTARG Il valore dell'ultimo argomento opzione elaborato dal comando
incorporato getopts (si veda COMANDI INCORPORATI DELLA SHELL pi
avanti).
OPTIND L'indice del prossimo argomento che dev'essere elaborato dal
comando incorporato getopts (si veda COMANDI INCORPORATI DELLA
SHELL pi avanti).
OSTYPE Automaticamente impostata a una stringa che descrive il sistema
operativo su cui bash
in esecuzione. Il valore di default dipendente dal sistema.
PIPESTATUS
Una variabile array (si veda Array pi avanti) contenente un
elenco di valori di stato d'uscita dai processi nelle pipeline
eseguite pi recentemente in primo piano [cio senza rilasciare il
controllo del terminale] (pu contenere anche un solo comando).
PPID L'ID di processo del genitore della shell. Questa variabile in
sola lettura.
PWD La directory di lavoro corrente come impostata dal comando cd.
RANDOM Ogni volta che questo parametro referenziato, viene generato un
numero intero casuale fra 0 e 32767. La sequenza di numeri
casuali pu essere inizializzata assegnando un valore a RANDOM.
Se RANDOM viene annullata, perde le sue propriet speciali, anche
se poi reimpostata.
REPLY Impostata alla riga di input letta dal comando incorporato read
quando nessun argomento specificato.
SECONDS
Ogni volta che questo parametro referenziato, viene restituito
il numero di secondi trascorsi dalla chiamata della shell. Se
un valore assegnato a SECONDS, il valore restituito in base ai
riferimenti successivi
il numero di secondi trascorsi dall'assegnamento pi il valore
assegnato. Se SECONDS viene annullata, perde le sue propriet
speciali, anche se poi reimpostata.
SHELLOPTS
Una lista, separata da due punti, di opzioni di shell abilitate.
Ogni parola nella lista un argomento valido per l'opzione -o al
comando incorporato set (si veda COMANDI INCORPORATI DI SHELL pi
avanti). Le opzioni che appaiono in SHELLOPTS sono quelle indi-
cate come on da set -o. Se questa variabile nell'ambiente
quando bash viene avviata, ogni opzione di shell nella lista
viene abilitata prima di leggere un qualsiasi file di avvio.
Questa variabile in sola lettura.
SHLVL incrementato di uno ogni volta che una istanza di bash viene
avviata.
UID Si espande all'ID-utente dell'utente corrente, inizializzato
all'avvio della shell. Questa variabile in sola lettura.
Le seguenti variabili sono usate dalla shell. In alcuni casi, bash
assegna un valore di default a una variabile; questi casi sono elencati
pi avanti.
BASH_ENV
Se questo parametro impostato quando bash sta eseguendo uno
script di shell, il suo valore interpretato come un nome di
file contenente comandi per inizializzare la shell, come in
~/.bashrc. Il valore di BASH_ENV
soggetto a espansione di parametro, sostituzione di comando ed
espansione aritmetica prima di essere interpretato come un nome
di file. PATH non usato per cercare il nome di file risul-
tante.
CDPATH Il percorso di ricerca per il comando cd. Questo un elenco di
directory, separate da due punti, nelle quali la shell cerca le
directory di destinazione specificate dal comando cd. Un valore
di esempio ".:~:/usr".
COLUMNS
Usato dal comando incorporato select per determinare il numero
di colonne del terminale nella stampa delle liste di selezione.
Automaticamente re-impostata al ricevimento di un segnale SIG-
WINCH.
COMPREPLY
Una variabile array dalla quale bash legge i possibili completa-
menti generati da una funzione di shell invocata dal servizio di
completamento programmabile (si veda Completamento programmabile
pi avanti).
EMACS Se bash trova questa variabile d'ambiente alla partenza della
shell col valore "t", presume che la shell sia in esecuzione in
un buffer di shell emacs e disabilita la modifica della riga.
FCEDIT L'editor di default per il comando incorporato fc.
FIGNORE
Una lista di suffissi, separati da due punti, da ignorare quando
si effettua il completamento del nome di file (si veda READLINE
pi avanti). Un nome di file il cui suffisso corrisponde a una
delle voci in FIGNORE
escluso dalla lista dei nomi di file individuati. Un valore di
esempio ".o:~".
GLOBIGNORE
Una lista di modelli, separati da due punti, che definiscono
l'insieme dei nomi di file che l'espansione del nome di percorso
deve ignorare. Se un nome di file individuato da un modello di
espansione del percorso corrisponde anche a uno dei modelli in
GLOBIGNORE, viene rimosso dalla lista dei nomi da individuare.
HISTCONTROL
Una lista di valori, separati da due punti, che controllano come
i comandi vengono salvati nell'elenco della cronologia. Se la
lista di valori include ignorespace, le righe che iniziano con
un carattere di spazio non vengono salvate nell'elenco della
cronologia. Un valore di ignoredups fa s che non venga salvata
ogni riga uguale all'elemento precedente della cronologia. Un
valore di ignoreboth
la combinazione di ignorespace e ignoredups. Un valore di
erasedups fa s che tutte le righe uguali alla riga corrente
vengano rimosse dall'elenco della cronologia prima che la riga
venga salvata. Qualsiasi valore che non nella lista di cui
sopra ignorato. Se HISTCONTROL viene annullato o non include
un valore valido, tutte le righe lette dall'analizzatore sintat-
tico della shell sono salvate nell'elenco della cronologia, a
meno che non sia stato specificato HISTIGNORE. La seconda riga
e le successive di un comando composto multiriga non vengono
controllate, e sono aggiunte alla cronologia indipendentemente
dal valore di HISTCONTROL.
HISTFILE
Il nome del file nel quale salvata la cronologia dei comandi
(si veda CRONOLOGIA pi avanti). Il valore predeterminato
~/.bash_history. Se
annullato la cronologia dei comandi non salvata al termine di
una shell interattiva.
HISTFILESIZE
Il numero massimo di righe contenute nel file della cronologia.
Quando a questa variabile assegnato un valore, il file della
cronologia accorciato, se necessario, rimuovendo le voci pi vec-
chie, per contenere non pi di quel numero di righe. Il valore
di default 500. Il file della cronologia inoltre troncato a
questa dimensione dopo la scrittura al termine di una shell
interattiva.
HISTIGNORE
Una lista di modelli separati da due punti usata per decidere
quali righe di comando devono essere salvate nell'elenco della
cronologia. Ogni modello comincia all'inizio della riga e deve
corrispondere alla riga completa (nessun `*' implicito
aggiunto). Ogni modello confrontato con la riga dopo che i
controlli specificati da HISTCONTROL sono stati applicati. In
aggiunta ai normali modelli di shell che confrontano caratteri,
`&' designa la linea precedente della cronologia. `&' pu essere
protetto usando un backslash; il backslash rimosso prima di
eseguire un confronto. La seconda riga e le successive di un
comando composto multiriga non vengono controllate, e sono
aggiunte alla cronologia indipendentemente dal valore di HISTIG-
NORE.
HISTSIZE
Il numero di comandi da memorizzare nella cronologia dei comandi
(si veda CRONOLOGIA pi avanti). Il valore di default 500.
HISTTIMEFORMAT
Se questa variabile impostata e non nulla, il suo valore usato
come stringa di formato per strftime(3) per stampare l'infor-
mazione "data e ora" associata a ogni voce della cronologia
mostrata dal comando incorporato history. Se questa variabile
impostata, data e ora verranno scritte nel file della cronologia
in modo da essere disponibili anche in successive sessioni della
shell.
HOME La home directory dell'utente corrente; l'argomento di default
per il comando incorporato cd. Il valore di questa variabile
anche usata quando si effettua l'espansione della tilde.
HOSTFILE
Contiene il nome di un file nello stesso formato di /etc/hosts
che dovr essere letto quando la shell ha bisogno di completare
un nome di host. La lista dei possibili completamenti di nome
di host pu essere cambiata mentre la shell in esecuzione; alla
prossima occasione in cui si tenta il completamento del nome di
host dopo che cambiato il valore, bash aggiunge il contenuto
del nuovo file alla lista esistente. Se HOSTFILE
impostato ma non ha alcun valore, bash tenta di leggere
/etc/hosts per ottenere la lista dei possibili completamenti del
nome di host. Quando HOSTFILE viene annullato, la lista dei
nomi di host viene pure annullata.
IFS L' Internal Field Separator (separatore di campo interno) usato
per la suddivisione in parole dopo l'espansione e per dividere
le righe in parole quando si esegue il comando incorporato read.
Il valore di default ``<space><tab><newline>''.
IGNOREEOF
Controlla l'azione della shell al ricevimento di un carattere
EOF come unico contenuto di una riga di input. Se impostato, il
valore
il numero di caratteri EOF consecutivi da battere come primo
carattere su una riga di input prima che bash esca. Se la vari-
abile esiste ma non ha un valore numerico, o non ha alcun val-
ore, il valore di default 10. Se non esiste, EOF indica la
fine dell'input per la shell.
INPUTRC
Il nome di file per il file di avvio di readline che prevale sul
valore di default che ~/.inputrc (si veda READLINE pi avanti).
LANG Usata per determinare la categoria di localizzazione per qualsi-
asi categoria non specificatamente specificata da una delle
variabili che iniziano con LC_.
LC_ALL Questa variabile prevale sul valore di LANG e su qualsiasi altra
variabile LC_ che specifichi una categoria di localizzazione.
LC_COLLATE
Questa variabile determina l'ordine di collazione usato quando
vengono ordinati i risultati dell'espansione di nome di per-
corso, e determina il comportamento di espressioni di inter-
vallo, classi di equivalenza e sequenze di ordinamento
all'interno dell'espansione di nome di percorso e della cor-
rispondenza tra stringhe.
LC_CTYPE
Questa variabile determina l'interpretazione di caratteri e il
comportamento di classi di caratteri all'interno dell'espansione
di nome di percorso e della corrispondenza tra stringhe.
LC_MESSAGES
Questa variabile determina la localizzazione usata per tradurre
stringhe tra virgolette precedute da un $.
LC_NUMERIC
Questa variabile determina la categoria di localizzazione usata
per la formattazione dei numeri.
LINES Usato dal comando incorporato select per determinare il numero
di linee del terminale nella stampa delle liste di selezione.
Automaticamente re-impostata al ricevimento di un segnale SIG-
WINCH.
MAIL Se questo parametro impostato a un nome di file e la variabile
MAILPATH non impostata, bash informa l'utente dell'arrivo di
posta nel file specificato.
MAILCHECK
Specifica la frequenza (in secondi) con cui bash controlla la
posta. Il valore di default 60 secondi. Quando il momento di
controllare la posta, la shell lo fa prima di mostrare il prompt
primario. Se questa variabile non impostata, o impostata a un
valore che non sia un numero maggiore o uguale a zero, la shell
disabilita il controllo della posta.
MAILPATH
Una lista di nomi di file separati da due punti, da usare per il
controllo della posta. Il messaggio che deve essere stampato
all'arrivo dei messaggi in un particolare file pu essere speci-
ficato separando il nome del file dal messaggio con un `?'.
Quando viene usato nel testo del messaggio $_ espanso al nome
del file di posta corrente. Per esempio:
MAILPATH='/var/mail/bfox?"You have mail":~/shell-mail?"$_ has
mail!"'
Bash fornisce un valore di default per questa variabile, ma il
posizionamento dei file di posta degli utenti utilizzato dipen-
dente dal sistema (per esempio, /var/mail/$USER).
OPTERR Se impostato al valore 1, bash mostra i messaggi di errore
generati dal comando incorporato getopts (si veda COMANDI INCOR-
PORATI DELLA SHELL pi avanti). OPTERR
inizializzato ad 1 ogni volta che viene invocata la shell o
viene eseguito uno script di shell.
PATH Il percorso di ricerca dei comandi. un elenco di directory sep-
arate da due punti, nelle quali la shell cerca i comandi (si
veda ESECUZIONE DEI COMANDI pi avanti). Un nome di directory di
lunghezza zero (nulla) nel valore di PATH indica la directory
corrente. Un nome di directory nullo pu apparire come una serie
di due punti adiacenti, o come due punti all'inizio o alla fine.
Il percorso di default dipendente dal sistema ed impostato
dall'amministratore che installa bash. Un valore frequente
``/usr/gnu/bin:/usr/local/bin:/usr/ucb:/bin:/usr/bin''.
POSIXLY_CORRECT
Se questa variabile presente nell'ambiente quando viene avviata
bash, la shell entra in modalit posix prima di leggere i file di
avvio, come se l'opzione di invocazione --posix fosse stata
specificata. Se impostata mentre la shell in esecuzione, bash
abilita la modalit posix, come se il comando set -o posix fosse
stato eseguito.
PROMPT_COMMAND
Se impostato, il valore eseguito ogni volta come un comando
prima di scrivere il prompt primario.
PS1 Il valore di questo parametro espanso (si veda STRINGHE DI
PROMPT pi avanti) e usato come stringa del prompt primario. Il
valore di default ``\s-\v\$ ''.
PS2 Il valore di questo parametro espanso allo stesso modo di PS1
ed usato come stringa di prompt secondario. Il valore di
default ``> ''.
PS3 Il valore di questo parametro usato come prompt per il comando
select (si veda GRAMMATICA DELLA SHELL sopra).
PS4 Il valore di questo parametro espanso allo stesso modo di PS1
ed il valore stampato prima di ogni comando che bash mostra
durante un trace di esecuzione. Il primo carattere di PS4
replicato tante volte, quanto necessario, per indicare livelli
multipli di indirezione. Il valore di default ``+ ''.
SHELL In questa variabile d'ambiente contenuto il percorso completo
della shell. Se non impostata quando la shell viene avviata,
bash le assegna il percorso completo della shell di login
dell'utente corrente.
TIMEFORMAT
Il valore di questo parametro usato come stringa di formato per
specificare come dovr essere mostrata l'informazione su data e
ora per pipeline aventi come prefisso la parola riservata time
Il carattere % introduce una sequenza di formattazione che
espansa a un valore di data e ora o ad altre informazioni. Le
sequenze di formattazione e il loro significato sono i seguenti;
le parentesi quadre denotano parti opzionali.
%% Una % letterale.
%[p][l]R Il tempo trascorso in secondi.
%[p][l]U Il numero di secondi di utilizzo della CPU in modalit
utente.
%[p][l]S Il numero di secondi di utilizzo della CPU in modalit
sistema.
%P La percentuale di utilizzo della CPU, calcolata come
(%U + %S) / %R.
La parte opzionale p una cifra che specifica la precisione, il
numero di cifre frazionali dopo il separatore decimale. Un val-
ore pari a 0 fa s che nessun separatore decimale o frazione
venga inserito nell'output. Possono essere specificate al mas-
simo tre posizioni dopo il separatore decimale; valori di p mag-
giori di 3 sono cambiati a 3. Se p non specificato utilizzato
il valore 3.
La parte opzionale l specifica un formato pi lungo, inclusi i
minuti, nella forma MMmSS.FFs. Il valore di p determina se la
frazione inclusa o meno.
Se questa variabile non impostata, bash agisce come se avesse
il valore $'\nreal\t%3lR\nuser\t%3lU\nsys%3lS'. Se il valore
nullo, non viene mostrata alcuna informazione di tempo. Una
newline finale aggiunta quando la stringa di formato visualiz-
zata.
TMOUT Se impostato a un valore maggiore di zero, TMOUT trattato come
il tempo limite (timeout) di default per il comando incorporato
read. Il comando select viene terminato se non riceve input
dopo TMOUT secondi quando l'input chiesto a un terminale. In
una shell interattiva il valore interpretato come il numero di
secondi di attesa per l'input dopo l'emissione del prompt pri-
mario. Se l'input non arriva Bash termina dopo aver aspettato
per quel numero di secondi.
TMPDIR Se impostato, Bash usa il suo valore come nome della directory
nella quale Bash crea file temporanei a uso della shell.
auto_resume
Questa variabile controlla il modo con cui la shell interagisce
con l'utente e con il job-control. Se questa variabile
impostata, dei comandi semplici composti da una sola parola
senza ridirezioni sono considerati come candidati per la ripresa
di un job in esecuzione che sia stato sospeso. Non possibile
alcuna ambiguit; se vi pi di un job che comincia con la stringa
digitata, scelto il job su cui si
effettuato l'accesso pi recentemente. Il nome di un job
sospeso, in questo contesto, la riga di comando usata per
avviarlo. Se impostato al valore exact, la stringa fornita deve
essere esattamente uguale al nome di un job fermo; se impostato
a substring, la stringa fornita deve combaciare con una sub-
stringa del nome di un job sospeso. Il valore substring for-
nisce funzionalit analoghe all'identificatore del job %? (si
veda JOB CONTROL pi avanti). Se impostato a qualsiasi altro
valore, la stringa fornita deve essere un prefisso del nome di
un job sospeso; questo consente funzionalit analoghe all'identi-
ficatore di job %string
histchars
Sono i due o tre caratteri che controllano l'espansione della
cronologia e la suddivisione in token (si veda ESPANSIONE DELLA
CRONOLOGIA pi avanti). Il primo carattere il carattere di
espansione della cronologia, il carattere che segnala l'inizio
di una espansione della cronologia, normalmente `!'. Il secondo
carattere il carattere di sostituzione rapida, che usato come
scorciatoia per rieseguire il comando precedentemente inserito,
sostituendo una stringa con un'altra nel comando. Il valore di
default `^'. Il terzo carattere, opzionale, il carattere che
indica che il resto della riga un commento, quando trovato
come primo carattere di una parola, normalmente `#'. Il carat-
tere di commento della cronologia fa s che la sostituzione della
cronologia venga saltata per le rimanenti parole sulla riga.
Esso non fa necessariamente s che l'analizzatore della shell
tratti il resto della riga come un commento.
Array
Bash fornisce variabili array monodimensionali. Ogni variabile pu
essere usata come un array; il comando incorporato declare dichiara
esplicitamente un array. Non c' un limite massimo per la dimensione di
un array, n alcuna richiesta che gli elementi siano indicizzati o
assegnati in modo contiguo. Gli array sono indicizzati usando numeri
interi e cominciano con l'indice zero.
Un array creato automaticamente se a una variabile qualsiasi asseg-
nato un valore usando la sintassi nome[subscript]=valore. Il subscript
viene trattato come un'espressione aritmetica che deve risultare un
numero maggiore o uguale a zero. Per dichiarare esplicitamente un
array, usare declare -a nome (si veda COMANDI INCORPORATI DI SHELL pi
avanti). anche accettato declare -a nome[subscript] ; il subscript
viene ignorato. Per una variabile array possono essere specificati
degli attributi utilizzando i comandi incorporati declare e readonly .
Ogni attributo si applica a tutti gli elementi di un array.
Agli elementi dell'array vengono assegnati valori usando assegnamenti
composti della forma nome=(valore1 ... valoren), dove ogni valore
della forma [subscript]=stringa. richiesto solo stringa. Se vengono
fornite le parentesi opzionali e il subscript, l'elemento viene asseg-
nato a quell'indice; altrimenti l'indice dell'elemento assegnato
l'ultimo indice gi utilizzato aumentato di uno. L'indicizzazione parte
da zero. Questa sintassi accettata anche dal comando incorporato
declare . Elementi singoli di un array possono essere assegnati con la
sintassi nome[subscript]=valore introdotta pi sopra.
Qualsiasi elemento di un array pu essere referenziato con ${nome[sub-
script]}. Le parentesi sono richieste per evitare conflitti con
l'espansione di percorso. Se subscript @ o *, la parola espande a a
tutti gli elementi di nome. Questi subscript differiscono solo quando
la parola appare inclusa fra virgolette. Se la parola quotata con
virgolette, ${nome[*]} espande a una singola parola col valore di ogni
elemento dell'array separato dal primo carattere della variabile spe-
ciale IFS , e ${nome[@]} espande ogni elemento di nome come una parola
separata. Quando non c' l'elemento di array, ${nome[@]} espanso alla
stringa nulla. Se l'espansione quotata con virgolette si trova dentro
una parola, l'espansione del primo parametro legato con la parte
iniziale della parola originale, e l'espansione dell'ultimo parametro
legato con l'ultima parte della parola originale. Questo analogo
all'espansione dei parametri speciali * e @ (si veda Parametri speciali
sopra). ${#nome[subscript]} espande alla lunghezza di ${nome[sub-
script]}. Se subscript * o @, l'espansione il numero di elementi
dell'array. Referenziare una variabile array senza specificare un sub-
script equivale a referenziare il suo elemento zero.
Il comando incorporato unset
usato per annullare gli array. unset nome[subscript] annulla l'ele-
mento di array a indice subscript. Bisogna stare attenti a evitare
effetti collaterali indesiderati causati dalla generazione di un nome
di file. unset nome, dove nome un array, o unset nome[subscript],
dove subscript * o @, rimuove l'intero array.
Ciascuno dei comandi incorporati declare, local e readonly accetta
un'opzione -a per specificare un array. Il comando incorporato read
accetta un'opzione -a per assegnare a un array una lista di parole
lette dallo standard input. I comandi incorporati set e declare
mostrano i valori di array in modo che da essere riutilizzabili come
assegnamenti.
L'espansione effettuata sulla riga di comando dopo che essa stata
divisa in parole. Vi sono sette tipi di espansione effettuati: espan-
sione delle parentesi graffe, espansione della tilde, espansione di
parametro e variabile, sostituzione di comando, espansione aritmetica,
suddivisione in parole ed espansione di percorso.
L'ordine di espansione : espansione delle parentesi graffe, espansione
della tilde, espansione di parametro, di variabile e aritmetica e sos-
tituzione di comando (fatta da sinistra a destra), suddivisione in
parole ed espansione di percorso.
Sui sistemi che la supportano, disponibile un'espansione aggiuntiva:
la sostituzione di processo.
Solo l'espansione delle parentesi graffe, la suddivisione in parole e
l'espansione di percorso possono cambiare il numero di parole
dell'espansione; le altre espansioni espandono una singola parola in
una singola parola. La sola eccezione a questo l'espansione di ``$@''
e "${nome[@]}" come spiegato sopra (si veda PARAMETRI).
Espansione delle parentesi graffe
Espansione delle parentesi graffe
un meccanismo con il quale possono essere generate stringhe arbi-
trarie. Questo meccanismo simile all'espansione di percorso, ma non
necessario che i file il cui nome generato esistano. I modelli cui si
applica l'espansione delle parentesi graffe hanno la forma di un pream-
bolo opzionale, seguito da una serie di stringhe separate da virgola o
una espressione di sequenza racchiusa fra parentesi graffe, seguite da
un' appendice opzionale. Il preambolo preposto a ogni stringa con-
tenuta dentro le parentesi graffe e l'appendice poi appesa a ogni
stringa risultante, espandendo da sinistra a destra.
Le espansioni delle parentesi graffe possono essere nidificate. Il
risultato di ogni stringa espansa non viene ordinato; conservato
l'ordine da sinistra a destra. Per esempio, a{d,c,b}e si espande in
`ade ace abe'.
Un'espressione di sequenza prende la forma {x..y}, dove x e y sono o
numeri interi o caratteri singoli. Se si specificano numeri interi,
l'espressione espande a ogni numero fra x e y, incluso. Se si specifi-
cano caratteri l'espressione espande a ogni carattere lessicografica-
mente compreso fra x e y, incluso. Da notare che entrambi x e y devono
essere dello stesso tipo.
L'espansione delle parentesi graffe effettuata prima di qualsiasi
altra espansione, e qualunque carattere speciale per uso delle altre
espansioni viene lasciato com'era nel risultato. Essa strettamente
testuale. Bash non applica alcuna interpretazione sintattica al con-
testo dell'espansione o al testo tra parentesi graffe.
Un'espansione delle parentesi graffe correttamente formata deve con-
tenere una parentesi graffa di apertura e una di chiusura, non quotate,
e almeno una virgola non quotata. Qualunque espansione delle parentesi
graffe erroneamente formata lasciata inalterata. Una { o , pu essere
quotata con un backslash per evitare che venga considerata parte di
un'espressione fra parentesi graffe. Per evitare conflitti con
l'espansione di parametro, la stringa ${ non d luogo all'espansione
delle parentesi graffe.
Questo costrutto tipicamente usato come abbreviazione quando il pre-
fisso comune delle stringhe da generare pi lungo che negli esempi
sopra:
mkdir /usr/local/src/bash/{old,new,dist,bugs}
o
chown root /usr/{ucb/{ex,edit},lib/{ex?.?*,how_ex}}
L'espansione delle parentesi graffe introduce una lieve incompatibilit
con le versioni tradizionali di sh. sh non tratta le parentesi graffe
aperte e chiuse, specialmente quando esse appaiono come parte di una
parola, e le conserva in uscita. Bash rimuove le parentesi graffe
dalle parole come consequenza dell'espansione delle parentesi graffe.
Per esempio, una parola data a sh come file{1,2} appare identica
nell'output. La stessa parola data in output come file1 file2 dopo
l'espansione operata da bash.
Se si desidera una stretta compatibilit con sh si avvia bash con
l'opzione +B o si disabilita l'espansione delle parentesi graffe con
l'opzione +B al comando set (si veda COMANDI INCORPORATI DELLA SHELL pi
avanti).
Espansione della tilde
Se una parola comincia con un carattere tilde (`~') non quotato, tutti
i caratteri che precedono la prima barra [/] non quotata (o tutti i
caratteri, se non vi alcuna barra) sono considerati un prefisso tilde.
Se nessuno dei caratteri nel prefisso tilde
quotato, i caratteri nel prefisso tilde che segue la tilde sono trat-
tati come un possibile nome di login. Se questo nome di login la
stringa nulla, la tilde sostituita con il valore del parametro HOME.
Se HOME viene annullato, invece sostituita la home directory
dell'utente che sta eseguendo la shell. Altrimenti, il prefisso tilde
sostituito con la home directory associata al nome di login specifi-
cato.
Se il prefisso tilde un `~+' il valore della variabile di shell PWD
sostituisce il prefisso tilde. Se il prefisso tilde un `~-', il val-
ore della variabile di shell OLDPWD, se impostato, viene sostituito.
Se il carattere che segue la tilde nel prefisso tilde un numero N, con
un prefisso opzionale `+' o `-', il prefisso tilde sostituito dal
corrispondente elemento dallo stack di directory, come dovrebbe essere
mostrato dal comando incorporato dirs invocato col prefisso tilde come
argomento. Se il carattere che segue la tilde nel prefisso tilde un
numero non preceduto da un segno `+' o `-', viene assunto `+'
Se il nome di login non valido o l'espansione della tilde non ha suc-
cesso, la parola rimane invariata.
Ogni assegnamento di variabile controllato per prefissi tilde non quo-
tati che seguono immediatamente un : o il primo =. In questi casi
viene effettuata l'espansione della tilde. Di conseguenza, si possono
usare nomi di file con delle tilde negli assegnamenti a PATH, MAILPATH,
e CDPATH, e la shell assegna il valore espanso.
Espansione di parametro
Il carattere `$' introduce l'espansione di parametro, la sostituzione
di comando, o l'espansione aritmetica. Il nome o simbolo del parametro
che dev'essere espanso pu essere racchiuso tra parentesi graffe, che
sono opzionali ma servono a proteggere la variabile che deve essere
espansa dai caratteri immediatamente seguenti, che potrebbero essere
interpretati come parte del nome [della variabile stessa].
Quando vengono usate le parentesi graffe, la parentesi graffa finale
corrispondente la prima `}' non protetta da un backslash o da stringhe
quotate, e non parte di un'espansione aritmetica inclusa, di una sosti-
tuzione di comando o di un'espansione di parametro.
${parametro}
Il valore di parametro sostituito. Le parentesi graffe sono
richieste quando parametro
un parametro posizionale con pi di una cifra [ossia 10 e
oltre], o quando parametro
seguito da un carattere che non deve essere interpretato come
parte del suo nome.
Se il primo carattere di parametro un punto esclamativo,
introdotto un livello di indirezione della variabile. Bash usa il
valore della variabile formata dal resto del parametro come nome di
variabile; questa variabile poi espansa e quel valore usato nel resto
della sostituzione, piuttosto che il valore stesso di parametro.
Questa conosciuta come espansione indiretta. Le eccezioni a ci sono
le espansioni di ${!prefisso*} e ${!nome[@]} descritte pi avanti. Il
punto esclamativo deve seguire immediatamente la parentesi graffa
iniziale per introdurre l'indirezione.
In ognuno dei casi sotto riportati, parola soggetta a espansione della
tilde, espansione di parametro, sostituzione di comando ed espansione
aritmetica. Quando non sta effettuando l'espansione della substringa,
Bash controlla se un parametro non impostato o nullo; l'omissione dei
due punti provoca il solo controllo di un parametro non impostato.
${parametro:-parola}
Usa i valori di default. Se parametro non impostato o nullo,
sostituita l'espansione di parola. Altrimenti, il valore di
parametro
sostituito
${parametro:=parola}
Assegna i valori di default. Se parametro non impostato o
nullo, l'espansione di parola
assegnata a parametro. Il valore di parametro
quindi sostituito. I parametri posizionali e i parametri spe-
ciali non possono essere assegnati in questo modo.
${parametro:?parola}
D una segnalazione di errore se nullo o stato annullato. Se
parametro
nullo o stato annullato, l'espansione di parola (o un messag-
gio di segnalazione, se parola non presente) viene scritta
sullo standard error e la shell, se non interattiva, termina.
Altrimenti, sostituito il valore di parametro.
${parametro:+parola}
Usa un valore alternativo. Se parametro
nullo o stato annullato, non sostituito niente, altrimenti
sostituita l'espansione di parola .
${parametro:offset}
${parametro:offset:lunghezza}
Espansione di substringa. Espande i caratteri di parametro fino
a lunghezza partendo dal carattere specificato da offset. Se
lunghezza viene omesso, espande alla substringa di parametro
partendo dal carattere specificato da offset. lunghezza e off-
set sono espressioni aritmetiche (si veda VALUTAZIONE ARITMETICA
pi avanti). lunghezza deve essere un numero maggiore o uguale a
zero. Se offset un numero minore di zero, il valore viene
usato come un offset dalla fine del valore di parametro. Se
parametro @, il risultato un numero di parametri posizionali
pari a lunghezza a partire da offset. Se parametro un nome di
array indicizzato da @ o *, il risultato un numero di elementi
dell'array pari a lunghezza a partire da ${parametro[offset]}.
Un offset negativo inteso come relativo al massimo indice
dell'array specificato aumentato di uno. Notare che un offset
negativo dev'essere separato dai due punti da almeno uno spazio
per evitare di essere confuso con l'espansione di :- . L'indi-
cizzazione della substringa a base zero a meno che non vengano
usati i parametri posizionali, nel qual caso l'indicizzazione
parte da 1.
${!prefisso*}
${!prefisso@}
Espande ai nomi delle variabili i cui nomi iniziano con pre-
fisso, separati dal primo carattere della variabile speciale IFS
${!nome[@]}
${!nome[*]}
Se nome una variabile di array, espande alla lista degli indici
di array (chiavi) assegnati in nome. Se nome non un array,
espande a 0 se nome impostato ed nullo in caso contrario.
Quando @ usato e l'espansione appare fra virgolette, ogni chi-
ave espande a una parola separata.
${#parametro}
sostituita la lunghezza in caratteri del valore di parametro.
Se parametro
* o @, il valore sostituito il numero di parametri posizionali.
Se parametro
un nome di array contrassegnato da * o @, il valore sostituito
il numero di elementi nell'array.
${parametro#parola}
${parametro##parola}
La parola
espansa per produrre un modello proprio come nell'espansione di
percorso. Se il modello trova una corrispondenza con l'inizio
del valore di parametro, allora il risultato dell'espansione il
valore espanso di parametro con il pi corto dei modelli che cor-
rispondono cancellato (nel caso di ``#'' ) o il pi lungo dei
modelli che corrispondono cancellato (nel caso di ``##'' ). Se
parametro
@ o *, l'operazione di rimozione del modello applicata di volta
in volta a ogni parametro posizionale, e l'espansione la lista
che ne risulta. Se parametro
una variabile di array con indice @ o *, l'operazione di
rimozione del modello applicata a ognuno degli elementi
dell'array, e l'espansione la lista risultante.
${parametro%parola}
${parametro%%parola}
La parola espansa per produrre un modello proprio come
nell'espansione di percorso. Se il modello corrisponde a una
parte finale del valore espanso di parametro, il risultato
dell'espansione il valore espanso di parametro con il pi corto
dei modelli corrispondenti cancellato (nel caso di ``%'' ) o il
pi lungo dei modelli corrispondenti cancellato (nel caso di
``%%''). Se parametro
@ o *, l'operazione di rimozione del modello applicata a ognuno
dei parametri posizionali, e l'espansione la lista risultante.
Se parametro
una variabile di array con indice @ o *, l'operazione di
rimozione del modello applicata a ognuno degli elementi
dell'array, e l'espansione la lista risultante.
${parametro/modello/stringa}
Il modello espanso per produrre un modello proprio come
nell'espansione di percorso. Parametro espanso e il suo valore
pi lungo che corrisponde a modello sostituito con stringa. Se
modello comincia con /, tutte le corrispondenze di modello sono
sostituite con stringa. Normalmente viene sostituita solo la
prima corrispondenza. Se modello comincia con #, deve cor-
rispondere all'inizio del valore espanso di parametro. Se mod-
ello inizia con %, deve corrispondere alla fine del valore
espanso di parametro. Se stringa nulla, le corrispondenze di
modello sono cancellate e la / che segue modello pu essere
omessa. Se parametro
@ o *, l'operazione di sostituzione applicata a ognuno dei
parametri posizionali, e l'espansione la lista risultante. Se
parametro
una variabile di array con indice @ o *, l'operazione di sosti-
tuzione applicata a ognuno degli elementi dell'array, e
l'espansione la lista risultante.
Sostituzione di comando
La sostituzione di comando permette che l'output di un comando
rimpiazzi il nome del comando. Vi sono due forme:
$(comando)
o
`comando`
Bash effettua l'espansione eseguendo il comando e rimpiazzando la sos-
tituzione di comando con lo standard output del comando, con ogni new-
line finale cancellato. I newline intermedi non vengono cancellati, ma
possono essere rimossi durante la suddivisione in parole. La sosti-
tuzione di comando $(cat file) pu essere sostituita dall'equivalente ma
pi veloce $(< file).
Quando usata la forma di sostituzione in vecchio stile con gli apici
rovesciati, il backslash conserva il suo significato letterale tranne
quando seguito da $, ` o \. Il primo apice rovesciato non preceduto
da un backslash fa terminare la sostituzione di comando. Quando si usa
la forma $(comando), tutti i caratteri tra le parentesi formano il
comando; nessuno considerato speciale.
La sostituzione di comando pu essere nidificata. Per nidificare quando
si usa la forma con gli apici rovesciati, bisogna far precedere gli
apici rovesciati pi interni con un carattere backslash di protezione.
Se la sostituzione appare tra virgolette, la suddivisione in parole e
l'espansione di percorso non sono effettuate sui risultati.
Espansione aritmetica
L'espansione aritmetica permette la valutazione di una espressione
aritmetica e la sostituzione del risultato. Il formato per l'espan-
sione aritmetica :
$((espressione))
L' espressione
trattata come se fosse tra virgolette, ma le virgolette dentro le par-
entesi non sono trattate in modo speciale. Tutti i token dell'espres-
sione sono assoggettati a espansione di parametro, espansione di
stringa, sostituzione di comando e rimozione dei caratteri di quo-
tatura. Le espansioni aritmetiche possono essere nidificate.
Il calcolo effettuato in accordo con le regole elencate pi avanti
sotto VALUTAZIONE ARITMETICA. Se espressione non valida, bash stampa
un messaggio che indica l'errore e non viene effettuata alcuna sosti-
tuzione.
Sostituzione di processo
La sostituzione di processo supportata su sistemi che supportano le
named pipe (FIFO) o il metodo /dev/fd per denominare i file aperti.
Essa prende la forma di <(lista) o >(lista). La lista di processi
eseguita con il suo input o output connesso a un FIFO o ad alcuni file
in /dev/fd. Il nome di questo file passato come argomento al comando
corrente come risultato dell'espansione. Se usata la forma >(lista),
la scrittura sul file fornisce input per la lista. Se usata la forma
<(lista), il file passato come argomento dovrebbe essere letto per
ottenere l'output di lista.
Su sistemi che la supportano, la sostituzione di processo effettuata
allo stesso momento dell'espansione di parametro e di variabile, della
sostituzione di comando e dell'espansione aritmetica.
Suddivisione in parole
La shell scandisce il risultato dell'espansione di parametro, sosti-
tuzione di comando ed espansione aritmetica che non si trovano tra vir-
golette, per effettuare la suddivisione in parole.
La shell tratta ogni carattere di IFS come un delimitatore, e suddivide
in parole, in corrispondenza con uno di questi caratteri, i risultati
delle altre espansioni. Se il valore di IFS non impostato o il suo
valore
esattamente <space><tab><newline>, il valore di default, qualsiasi
sequenza di caratteri IFS serve per delimitare le parole. Se IFS ha un
valore diverso da quello di default, allora sequenze di caratteri di
spaziatura space e tab sono ignorate all'inizio e alla fine della
parola, se il carattere di spaziatura presente nel valore di IFS (un
carattere di spaziatura IFS ). Qualunque carattere in IFS che non un
carattere di spaziatura IFS, insieme con qualsiasi carattere di
spaziatura IFS adiacente, delimita un campo. Una sequenza di caratteri
di spaziatura IFS
anche trattata come un delimitatore. Se il valore di IFS
nullo, non avviene alcuna suddivisione in parole.
Argomenti esplicitamente nulli("" or '') sono conservati. Argomenti
non quotati implicitamente nulli, risultanti dall'espansione di
parametri con valore nullo, sono rimossi. Se un parametro con valore
nullo espanso fra virgolette, considerato un argomento nullo e viene
rimosso.
da notare che se non avviene alcuna espansione non viene effettuata
alcuna suddivisione.
Espansione di percorso
Dopo la suddivisione in parole, a meno che non sia stata impostata
l'opzione -f, bash scandisce ogni parola alla ricerca di caratteri *, ?
e [. Se uno di questi caratteri presente, allora la parola consider-
ata come un modello, e sostituita con una lista, in ordine alfabetico,
di nomi di file che corrispondono al modello. Se nessun nome di file
corrispondente viene trovato, e l'opzione di shell nullglob
disabilitata, la parola lasciata inalterata. Se l'opzione nullglob
impostata, e nessuna corrispondenza trovata, la parola rimossa. Se
l'opzione di shell failglob
impostata, e non viene trovata alcuna corrispondenza, viene stampato
un messaggio di errore e il comando non viene eseguito. Se l'opzione
di shell nocaseglob
abilitata, il confronto effettuato senza distinzione fra maiuscole e
minuscole nei caratteri alfabetici. Quando un modello usato per
l'espansione di percorso, il carattere ``.'' all'inizio di un nome o
immediatamente dopo una barra [/] deve essere confrontato esplicita-
mente, a meno che l'opzione di shell globdot non sia impostata. Quando
si confronta un percorso, il carattere barra [/] deve sempre essere
confrontato esplicitamente. Negli altri casi, il carattere ``.'' non
trattato in modo speciale. Vedere la descrizione di shopt pi avanti
sotto COMANDI INCORPORATI DELLA SHELL per una descrizione delle opzioni
di shell nocaseglob, nullglob, failglob e dotglob .
La variabile di shell GLOBIGNORE pu essere usata per restringere la
serie di nomi di file che corrispondono a un modello. Se GLOBIGNORE
impostato, ogni nome di file da confrontare che corrisponde anche a
uno dei modelli in GLOBIGNORE
rimosso dalla lista dei nomi che corrispondono al modello. I nomi di
file ``.'' e ``..'' sono sempre ignorati quando GLOBIGNORE
impostato e non nullo. Comunque, impostare GLOBIGNORE a un valore non
nullo ha l'effetto di abilitare l'opzione di shell dotglob , cos da
cercare una corrispondenza con tutti gli altri nomi di file che
iniziano con un ``.'' Per ottenere il comportamento (usato in prece-
denti versioni) di ignorare i nomi di file che iniziano con ``.'', si
deve fare un modello ``.*'' in GLOBIGNORE. L'opzione dotglob
disabilitata quando GLOBIGNORE viene annullato.
Modelli di ricerca / espressioni regolari
Ogni carattere che appare in un modello (espressione regolare), tranne
quelli speciali descritti qui sotto, corrisponde a se stesso. Il
carattere NULL non pu far parte di un'espressione regolare. Un back-
slash segnala come speciale il carattere che segue; il backslash igno-
rato durante il confronto. I caratteri speciali del modello devono
essere racchiusi tra apici se si vuole che siano considerati cos come
sono scritti.
I caratteri speciali nelle espressioni regolari hanno i seguenti signi-
ficati:
* Corrisponde a qualsiasi stringa, inclusa la stringa nulla.
? Corrisponde a qualsiasi carattere singolo.
[...] Corrisponde a uno qualsiasi dei caratteri racchiusi fra par-
entesi quadre. Una coppia di caratteri separati da un segno
meno denota un' espressione di intervallo, che individua ogni
carattere che si trova tra quei due caratteri, essi stessi
inclusi, usando la sequenza di ordinamento della localizzazione
corrente. Se il primo carattere che segue il [
un ! o un ^ allora qualsiasi carattere non specificato
ritenuto corrispondente. L'ordine di ordinamento dei caratteri
nell'espressione di intervallo determinato dalla localizzazione
corrente e dal valore della variabile di shell LC_COLLATE, se
impostata. Un - pu essere specificato includendolo come primo o
ultimo carattere nella lista. Una ] pu essere specificata
includendola come primo carattere nella lista.
All'interno di [ e ], possono essere specificate classi di
caratteri usando la sintassi [:classe:], dove classe una delle
seguenti classi definite nello standard POSIX:
alnum alpha ascii blank cntrl digit graph lower print punct
space upper word xdigit
Una classe di caratteri trova una corrispondenza con qualsiasi
carattere appartenente a quella classe. La classe di caratteri
word individua lettere, cifre e il carattere _ .
All'interno di [ e ] pu essere specificata una classe di equiv-
alenza con la sintassi [=c=], che individua tutti i caratteri
con lo stesso grado di ordinamento (come definito dalla localiz-
zazione corrente) del carattere c.
All'interno di [ e ] la sintassi [.symbol.] individua il simbolo
di ordinamento symbol.
Se l'opzione di shell extglob abilitata col comando incorporato shopt,
vengono riconosciuti diversi operatori estesi che descrivono modelli.
Nella descrizione seguente, una pattern-list una lista di uno o pi
modelli separati da una |. Possono essere formati modelli composti
usando uno o pi dei seguenti submodelli:
?(pattern-list)
Individua zero o una occorrenza dei modelli specificati
*(pattern-list)
Individua zero o pi occorrenze dei modelli specificati
+(pattern-list)
Individua una o pi occorrenze dei modelli specificati
@(pattern-list)
Individua uno dei modelli specificati
!(pattern-list)
Individua qualsiasi cosa eccetto uno dei modelli specifi-
cati
Rimozione dei caratteri di quotatura
Dopo le precedenti espansioni, tutte le occorrenze non quotate dei
caratteri \, ' e " non originate da una delle espansioni di cui sopra
sono rimosse.
Prima che un comando sia eseguito, i suoi input e output possono essere
ridiretti usando una speciale notazione interpretata dalla shell. La
ridirezione pu anche essere usata per aprire e chiudere file per
l'ambiente di esecuzione della shell corrente. I seguenti operatori di
ridirezione possono precedere o apparire in qualsiasi posizione
all'interno di un comando semplice o possono venire dopo un comando.
Le ridirezioni sono elaborate nell'ordine in cui compaiono, da sinistra
a destra.
Nelle seguenti descrizioni, se il numero di descrittore di file omesso,
e il primo carattere dell'operatore di ridirezione <, la ridirezione si
riferisce allo standard input (descrittore di file 0). Se il primo
carattere dell'operatore di ridirezione >, la ridirezione si riferisce
allo standard output (descrittore di file 1).
La parola che segue l'operatore di ridirezione nelle seguenti
descrizioni, se non diversamente specificato, sottoposta a espansione
delle parentesi graffe, espansione della tilde, espansione di
parametro, sostituzione di comando, espansione aritmetica, rimozione
dei caratteri di quotatura, espansione dei percorsi e suddivisione in
parole. Se si espande a pi di una parola bash d una segnalazione di
errore.
da notare che l'ordine delle ridirezioni significativo. Per esempio,
il comando
ls > dirlist 2>&1
dirige sia lo standard output che lo standard error sul file dirlist,
mentre il comando
ls 2>&1 > dirlist
dirige solo lo standard output sul file dirlist, poich lo standard
error stato duplicato come standard output prima che lo standard out-
put fosse ridiretto su dirlist.
Bash manipola parecchi nomi di file specialmente quando sono usati in
ridirezioni, come descritto nella tavola seguente:
/dev/fd/fd
Se fd un intero valido, il descrittore di file fd
duplicato.
/dev/stdin
Il descrittore di file 0 duplicato.
/dev/stdout
Il descrittore di file 1 duplicato.
/dev/stderr
Il descrittore di file 2 duplicato.
/dev/tcp/host/porta
Se host un nome di host valido o un indirizzo Internet,
e porta un numero intero di porta o il nome di un
servizio, bash tenta di aprire una connessione TCP al
socket corrispondente.
/dev/udp/host/porta
Se host un nome di host valido o un indirizzo Internet,
e porta un numero intero di porta o il nome di un
servizio, bash tenta di aprire una connessione UDP al
socket corrispondente.
L'insuccesso nell'aprire o creare un file determina l'insuccesso della
ridirezione.
Ridirezioni con descrittori di file maggiori di 9 dovrebbero essere
usate con attenzione, poich possono entrare in conflitto coi descrit-
tori di file usati internamente dalla shell.
Ridirezione dell'input
La ridirezione dell'input fa s che il file il cui nome risulta
dall'espansione di parola venga aperto in lettura sul descrittore di
file n, o come standard input (descrittore di file 0) se n non speci-
ficato.
Il formato generico per ridirigere l'input :
[n]<parola
Ridirezione dell'output
La ridirezione dell'output fa s che il file il cui nome risulta
dall'espansione di parola venga aperto in scrittura sul descrittore di
file n, o come standard output (descrittore di file 1) se n non speci-
ficato. Se il file non esiste viene creato; se esiste viene
sovrascritto, come se fosse di dimensione zero.
Il formato generico per ridirigere l'output :
[n]>parola
Se l'operatore di ridirezione >, e l'opzione noclobber del comando
incorporato set
stata abilitata, la ridirezione non ha successo se il file il cui nome
risulta dall'espansione di parola esiste ed un file regolare. Se
l'operatore di ridirezione >|, o l'operatore di ridirezione > e
l'opzione noclobber del comando incorporato set non abilitata, la
ridirezione tentata anche se il file denominato da parola esiste.
Accodare l'output ridiretto
La ridirezione dell'output in questo modalit fa s che il file il cui
nome risulta dall'espansione di parola venga aperto per accodare sul
descrittore di file n, o sullo standard output (descrittore di file 1)
se n non specificato. Se il file non esiste viene creato.
Il formato generico per accodare l'output :
[n]>>parola
Ridirezione di standard output e standard error
Bash permette, con questo costrutto, che l'output sia lo standard out-
put (descrittore di file 1) che quello dello standard error (descrit-
tore di file 2) siano ridiretti sul file il cui nome risulta
dall'espansione di parola.
Vi sono due formati per ridirigere lo standard output e lo standard
error:
&>parola
e
>&parola
Delle due forme, la prima quella preferita. Questo semanticamente
equivalente a
>parola 2>&1
Here Document
Questo tipo di ridirezione istruisce la shell a leggere l'input
dall'input corrente, finch non venga incontrata una riga contenente
solo parola (senza alcun carattere blank dopo la parola stessa). Tutte
le righe lette fino a quel punto sono quindi usate come standard input
per un comando.
Il formato degli here-document il seguente:
<<[-]parola
here-document
delimitatore
Nessuna espansione di parametro, sostituzione di comando, espansione
aritmetica o espansione di percorso effettuata su parola. Se un
carattere qualsiasi in parola
quotato, il delimitatore
il risultato della rimozione dei caratteri di quotatura da parola, e
le righe nel here-document non vengono espanse. Se parola non quo-
tata, tutte le righe del here-document sono soggette a espansione di
parametro, sostituzione di comando ed espansione aritmetica. In
quest'ultimo caso, la coppia \<newline>
ignorata, e \ deve essere usata per quotare i caratteri \, $, e `.
Se l'operatore di ridirezione <<-, tutti i caratteri tab a inizio riga
sono eliminati dalle righe in input e dalla riga che contiene delimita-
tore. Questo permette che un here-document dentro uno script di shell
possa essere indentato in maniera naturale.
Here String
Una variante degli here document, il formato :
<<<parola
La parola espansa ed passata al comando come suo standard input.
Duplicazione dei descrittori di file
L'operatore di ridirezione
[n]<&parola
usato per duplicare descrittori di file di input. Se parola si
espande in una o pi cifre, il descrittore di file indicato da n
fatto diventare una copia di quel descrittore di file. Se le cifre in
parola non specificano un descrittore di file aperto per l'input, si
verifica un errore di ridirezione. Se parola risulta essere, dopo
l'espansione, -, il descrittore di file n viene chiuso. Se n non
specificato, usato lo standard input (descrittore di file 0).
L'operatore
[n]>&parola
usato in modo analogo per duplicare i descrittori di file di output.
Se n non specificato, usato lo standard output (descrittore di file
1). Se le cifre in parola non specificano un descrittore di file
aperto in output, si verifica un errore di ridirezione. Come caso spe-
ciale, se n omesso, e parola non si espande a una o pi cifre, lo stan-
dard output e lo standard error sono ridiretti come descritto in prece-
denza.
Muovere i descrittori di file
L'operatore di ridirezione
[n]<&cifra-
muove il descrittore di file cifra al descrittore di file n, o allo
standard input (descrittore di file 0) se n non specificato. cifra
chiuso dopo essere stato duplicato in n.
Analogamente l'operatore di ridirezione
[n]>&cifra-
muove il descrittore di file cifra al descrittore di file n, o allo
standard output (descrittore di file 1) se n non specificato.
Apertura di descrittori di file per lettura e scrittura
L'operatore di ridirezione
[n]<>parola
fa s che il file il cui nome l'espansione di parola venga aperto sia
in lettura che in scrittura sul descrittore di file n, o sul descrit-
tore di file 0 se n non specificato. Se il file non esiste, viene
creato.
Gli alias consentono di sostituire una stringa con una parola se usata
come prima parola di un comando semplice. La shell mantiene una lista
di alias che possono essere impostati e rimossi con i comandi incorpo-
rati alias e unalias (si veda COMANDI INCORPORATI DELLA SHELL pi
avanti). La prima parola di ogni comando, se non quotata, viene con-
trollata per vedere se a essa associato un alias. Se questo il caso,
la parola sostituita dal valore dell'alias. I caratteri /, $, ` e =,
e ognuno dei metacaratteri della shell o i caratteri di quotatura elen-
cati sopra non possono apparire in un nome di alias. Il testo da sos-
tituire pu contenere qualunque input valido per la shell, inclusi i
metacaratteri della shell. La prima parola del testo cos sostituito
controllata per vedere se contiene alias, ma una parola che coincide
con l'alias che si sta espandendo non viene espansa una seconda volta.
Questo significa che si pu far interpretare ls come ls -F, per esempio,
e bash non tenta di espandere ulteriormente il testo cos sostituito.
Se l'ultimo carattere del valore di un alias un blank, allora la suc-
cessiva parola di comando che segue l'alias pure controllata per
l'espansione di alias.
Gli alias sono creati ed elencati con il comando alias e rimossi con il
comando unalias.
Non vi alcun meccanismo per usare argomenti nel testo da sostituire.
Se servono degli argomenti, si dovr usare una funzione di shell (si
veda. FUNZIONI pi avanti).
Gli alias non sono espansi quando la shell non interattiva, a meno che
l'opzione di shell expand_aliases non sia impostata mediante shopt (si
veda la descrizione di shopt sotto COMANDI INCORPORATI DI SHELL pi
avanti).
Le regole che riguardano la definizione e l'uso degli alias possono
facilmente generare confusione. Bash legge sempre almeno una riga com-
pleta di input prima di eseguire qualsiasi comando di quella riga. Gli
alias sono espansi quando un comando letto, non quando eseguito.
Perci, una definizione di alias che appaia sulla una riga che contiene
gi un altro comando non ha effetto fino a che non stata letta la suc-
cessiva riga di input. I comandi che seguono la definizione di un
alias su una data riga non sono influenzati da un nuovo alias. Questo
comportamento un problema anche quando sono eseguite delle funzioni.
Gli alias sono espansi quando viene letta una definizione di funzione,
non quando la funzione eseguita, poich una definizione di funzione
essa stessa un comando composto. Come conseguenza, gli alias definiti
in una funzione sono disponibili solo dopo che quella funzione ese-
guita. Per maggior sicurezza, conviene porre sempre le definizioni di
alias su una riga separata e non usare alias in comandi composti.
Quasi a tutti gli effetti, le finalit per cui sono usati gli alias pos-
sono essere raggiunte usando invece funzioni di shell.
Una funzione di shell, definita come descritto prima sotto GRAMMATICA
DELLA SHELL, immagazzina una serie di comandi per una futura ese-
cuzione. Quando il nome di una funzione di shell usato come un nome
di comando semplice, la lista di comandi associati con quel nome di
funzione viene eseguita. Le funzioni sono eseguite nel contesto della
shell corrente; nessun nuovo processo creato per interpretarle (a dif-
ferenza di quanto avviene eseguendo uno script di shell). Quando una
funzione eseguita, gli argomenti passati alla funzione costituiscono i
parametri posizionali della funzione stessa. Il parametro speciale #
viene aggiornato per riflettere il cambiamento. Il parametro speciale
0 rimane inalterato. Il primo elemento della variabile FUNCNAME
impostato al nome della funzione durante l'esecuzione della funzione.
Tutti gli altri aspetti dell'ambiente di esecuzione della shell sono
identici tra una funzione e il suo chiamante ad eccezione della ges-
tione dei segnali DEBUG e RETURN (si veda la descrizione del comando
incorporato trap sotto COMANDI INCORPORATI DI SHELL pi avanti), i quali
non sono ereditati a meno che alla funzione sia stato dato l'attributo
trace (si veda la descrizione del comando incorporato declare pi
avanti) o l'opzione di shell -o functrace sia stata abilitata per mezzo
del comando incorporato set (nel qual caso tutte le funzioni ereditano
la gestione dei segnali DEBUG e RETURN).
Variabili locali alla funzione possono essere dichiarate con il comando
incorporato local. Di solito, le variabili e i loro valori sono condi-
visi tra la funzione e il suo chiamante.
Se il comando incorporato return
eseguito in una funzione, la funzione termina e l'esecuzione riprende
con il comando che viene subito dopo la chiamata di funzione. Qualsi-
asi comando associato con la gestione del segnale RETURN viene eseguito
prima di riprendere l'esecuzione. Quando una funzione termina i valori
dei parametri posizionali e il parametro speciale # sono ripristinati
ai valori che avevano prima dell'esecuzione della funzione.
I nomi delle funzioni e le definizioni possono essere elencati con
l'opzione -f dei comandi incorporati declare o typeset. L'opzione -F
di declare o typeset elenca solo i nomi di funzione (e opzionalmente il
file d'origine e il numero di riga, se l'opzione di shell extdebug
abilitata). Le funzioni possono essere esportate, in modo che le sub-
shell automaticamente le trovino gi definite con l'opzione -f del
comando incorporato export. Una definizione di funzione pu essere can-
cellata usando l'opzione -f del comando incorporato unset . Da notare
che funzioni e variabili di shell aventi lo stesso nome possono
risultare in pi elementi con lo stesso nome nell'ambiente passato alle
shell figlie. Bisogna fare attenzione ai casi in cui questo pu causare
un problema.
Le funzioni possono essere ricorsive. Nessun limite posto sul numero
di chiamate ricorsive.
La shell permette di calcolare espressioni aritmetiche, sotto certe
circostanze (si veda i comandi incorporati let e declare e Espansione
aritmetica). Il calcolo viene fatta usando interi a larghezza fissa,
senza controllo di supero della capacit, sebbene la divisione per 0 sia
intercettata e segnalata come errore. Gli operatori e la loro prece-
denza, associativit e valori, sono gli stessi del linguaggio C. La
seguente lista di operatori raggruppata per operatori di uguale liv-
ello di precedenza. I livelli sono elencati in ordine di precedenza
decrescente.
id++ id--
post-incremento e post-decremento di una variabile
++id --id
pre-incremento e pre-decremento di una variabile
- + meno e pi unari
! ~ negazione logica e "bit a bit"
** elevamento a potenza
* / % moltiplicazione, divisione, modulo
+ - addizione, sottrazione
<< >> scorrimento "bit a bit" a sinistra e a destra
<= >= < >
confronto
== != uguaglianza e differenza
& AND "bit a bit"
^ OR esclusivo "bit a bit"
| OR "bit a bit"
&& AND logico
|| OR logico
expr?expr:expr
operatore condizionale
= *= /= %= += -= <<= >>= &= ^= |=
assegnamento
expr1 , expr2
virgola
Le variabili di shell possono essere usate come operandi; l'espansione
di parametro effettuata prima della valutazione dell'espressione.
All'interno di un'espressione, le variabili di shell possono essere
referenziate anche per nome senza bisogno di usare la sintassi di
espansione di parametro. Una variabile di shell nulla o rimossa ha
valore 0 se referenziata per nome senza l'uso della sintassi di espan-
sione di parametro. Il valore di una variabile valutato come
un'espressione aritmetica quando referenziata, o quando a una vari-
abile a cui stato dato l'attributo integer con declare -i stato asseg-
nato un valore. Un valore nullo viene considerato come 0. Una vari-
abile di shell non ha bisogno essere stata dichiarata intera per poter
essere usata in un'espressione.
Le costanti che iniziano per 0 sono interpretate come numeri ottali.
Uno 0x o 0X iniziale si usa per indicare numeri esadecimali. Altri-
menti, i numeri prendono la forma [base#]n, dove base un numero deci-
male tra 2 e 64 che definisce la base aritmetica, e n un numero
espresso in quella base. Se base# omessa, allora usata la base 10.
Le cifre maggiori di 9 sono rappresentate dalle lettere minuscole,
dalle lettere maiuscole, e da @ e _, in quest'ordine. Se la base
minore o uguale a 36, le lettere minuscole e maiuscole possono essere
usate indifferentemente per rappresentare numeri compresi tra 10 e 35.
Gli operatori sono valutati in ordine di precedenza. Le subespressioni
tra parentesi sono valutate prima e possono prevalere sulle regole di
precedenza di cui sopra.
Le espressioni condizionali sono usate dal comando composto [[ e dai
comandi incorporati test e [ per verificare attributi di file ed effet-
tuare comparazioni aritmetiche e fra stringhe. Le espressioni sono
formate dalle seguenti primitive unarie o binarie. Se qualsiasi argo-
mento di file di una delle primitive della forma /dev/fd/n, il
descrittore di file n viene controllato. Se l'argomento di file di una
delle primitive uno tra /dev/stdin, /dev/stdout o /dev/stderr, il
descrittore di file 0, 1 o 2, rispettivamente, viene controllato.
Se non diversamente specificato, le primitive che operano su file uti-
lizzano eventuali collegamenti simbolici e operano sul file puntato dal
collegamento simbolico, invece che sul collegamento simbolico stesso.
-a file
Vero se file esiste.
-b file
Vero se file esiste ed un file speciale a blocchi.
-c file
Vero se file esiste ed un file speciale a caratteri.
-d file
Vero se file esiste ed una directory.
-e file
Vero se file esiste.
-f file
Vero se file esiste ed un file normale [non una directory o
altro].
-g file
Vero se file esiste ed impostato il suo bit set-group-id.
-h file
Vero se file esiste ed un collegamento simbolico [symbolic
link].
-k file
Vero se file ha il suo ``sticky'' bit impostato.
-p file
Vero se file esiste ed una named pipe (FIFO).
-r file
Vero se file esiste ed leggibile.
-s file
Vero se file esiste ed di dimensione maggiore di zero byte.
-t fd Vero se il descrittore di file fd
aperto e si tratta di un terminale.
-u file
Vero se file esiste ed impostato il suo bit set-user-id.
-w file
Vero se file esiste ed scrivibile.
-x file
Vero se file esiste ed eseguibile.
-O file
Vero se file esiste ed posseduto dall'id effettivo dell'utente.
-G file
Vero se file esiste ed posseduto dal gruppo effettivo
dell'utente.
-L file
Vero se file esiste ed un collegamento simbolico.
-S file
Vero se file esiste ed un socket.
-N file
Vero se file esiste ed stato modificato dopo l'ultima volta in
cui stato letto.
file1 -nt file2
Vero se file1 pi recente (come data di modifica) di file2 o se
file1 esiste e file2 no.
file1 -ot file2
Vero se file1 pi vecchio di file2, o se file2 esiste e file1
no.
file1 -ef file
Vero se file1 e file2 si riferiscono allo stesso dispositivo e
hanno lo stesso numero di inode.
-o optname
Vero se l'opzione di shell optname
abilitata. Si veda l'elenco delle opzioni sotto la descrizione
dell'opzione -o al comando incorporato set pi avanti.
-z stringa
Vero se la lunghezza di stringa 0.
stringa
-n stringa
Vero se la lunghezza di stringa
diversa da zero.
stringa1 == stringa2
Vero se le stringhe sono uguali. = pu essere usato invece che ==
per aderire rigorosamente allo standard POSIX.
stringa1 != stringa2
Vero se le stringhe non sono uguali.
stringa1 < stringa2
Vero se stringa1 precede come ordine stringa2 lessicografica-
mente nella localizzazione corrente.
stringa1 > stringa2
Vero se stringa1 segue come ordine stringa2 lessicograficamente
nella localizzazione corrente.
arg1 OP arg2
OP
uno tra -eq, -ne, -lt, -le, -gt, o -ge. Questi operatori arit-
metici binari risultano veri se arg1 , rispettivamente, uguale,
non uguale, minore, minore o uguale, maggiore, o maggiore o
uguale ad arg2. Arg1 e arg2 possono essere numeri interi posi-
tivi o negativi.
Quando viene eseguito un comando semplice la shell effettua le seguenti
espansioni, assegnamenti e ridirezioni, da sinistra a destra.
1. Le parole che l'analizzatore ha individuato essere assegnamenti
di variabile (quelle che precedono il nome di comando) oppure
ridirezioni vengono messe da parte per un'elaborazione succes-
siva.
2. Le parole che non sono assegnamenti di variabile o ridirezioni
sono espanse. Se presente qualche parola dopo l'espansione, la
prima parola
considerata essere il nome del comando e le rimanenti parole
come argomenti dello stesso.
3. Le ridirezioni sono effettuate come descritte prima sotto RIDI-
REZIONE.
4. Il testo dopo = in ogni assegnamento di variabile sottoposto a
espansione della tilde, sostituzione di comando, espansione
aritmetica e rimozione dei caratteri di quotatura prima di venir
assegnato alla variabile.
Se non risulta nessun nome di comando, gli assegnamenti di variabile
influenzano l'ambiente di shell corrente. Altrimenti, le variabili
sono aggiunte all'ambiente del comando eseguito senza influenzare
l'ambiente di shell corrente. Se uno qualsiasi degli assegnamenti
tenta di assegnare un valore a una variabile in sola lettura, si veri-
fica un errore e il comando terminato con uno stato diverso da zero.
Se non risulta nessun nome di comando le ridirezioni sono effettuate ma
senza influenzare l'ambiente di shell corrente. Se si verifica un
errore di ridirezione il comando terminato con uno stato diverso da
zero.
Se rimasto un nome di comando dopo l'espansione, l'esecuzione procede
come descritto sotto. Altrimenti, il comando esce. Se una delle
espansioni conteneva una sostituzione di comando lo stato di uscita del
comando lo stato d'uscita dell'ultima sostituzione di comando ese-
guita. Se non ci sono state sostituzioni di comando il comando esce
con uno stato d'uscita di zero.
Dopo che un comando stato suddiviso in parole, se esso risulta essere
un comando semplice e di una lista opzionale di argomenti, sono
eseguite le seguenti azioni.
Se il nome del comando non contiene barra [/], la shell tenta di local-
izzarla. Se esiste una funzione di shell con quel nome, viene invocata
quella funzione, come descritto prima in FUNZIONI. Se il nome non cor-
risponde a una funzione, la shell lo cerca nella lista dei comandi
incorporati della shell. Se ne viene trovato uno corrispondente, viene
invocato quel comando incorporato.
Se il nome non n una funzione di shell n un comando incorporato, e non
contiene alcuna barra [/], bash cerca tra gli elementi della variabile
PATH una directory che contenga un file eseguibile con quel nome. Bash
usa una tabella hash [indicizzata] per ricordare i percorsi completi
dei file eseguibili (si veda hash sotto COMANDI INCORPORATI DELLA SHELL
pi avanti). Una ricerca completa nelle directory in PATH
effettuata solo se il comando non viene trovato nella tabella hash.
Se la ricerca non ha successo, la shell stampa un messaggio di errore e
ritorna uno stato d'uscita di 127.
Se la ricerca ha successo, o se il nome del comando contiene uno o pi
barre [/], la shell esegue il programma indicato in un ambiente di ese-
cuzione separato. L'argomento 0 impostato al nome specificato, e i
rimanenti argomenti del comando sono impostati agli argomenti specifi-
cati, se presenti.
Se quest'esecuzione non ha successo perch il file non in formato
eseguibile e il file non una directory, si suppone che sia uno script
di shell, cio un file che contiene comandi di shell, ed generata una
subshell per eseguirlo. Questa subshell reinizializza se stessa, cos
che l'effetto come se fosse stata invocata una nuova shell per gestire
lo script, con la differenza che la lista dei nomi completi di comando
ricordati dalla shell genitrice (si veda hash pi avanti sotto COMANDI
INCORPORATI DELLA SHELL) sono disponibili anche alla shell figlia.
Se il programma un file che inizia con #!, il resto della prima riga
del file stesso specifica un interprete da invocare. La shell esegue
l'interprete specificato su sistemi operativi che non gestiscono questo
formato eseguibile essi stessi. Gli argomenti per l'interprete con-
sistono di un singolo argomento opzionale che segue il nome dell'inter-
prete sulla prima riga del programma, seguito dal nome del programma,
seguito dagli argomenti forniti al comando, se ve ne sono.
La shell ha un ambiente di esecuzione, costituito da:
+o file aperti ereditati dalla shell all'invocazione, come modifi-
cati dalle ridirezioni fornite al comando incorporato exec
+o la corrente directory di lavoro come impostata da cd, pushd o
popd, o ereditata dalla shell all'invocazione
+o la maschera del modo di creazione dei file come impostata da
umask o ereditata dalla shell genitrice
+o i segnali da intercettare impostati da trap
+o parametri di shell che sono stati impostati da un assegnamento
di variabile o con set, o ereditati dalla shell genitrice
nell'ambiente
+o funzioni di shell definite durante l'esecuzione o ereditate
dalla shell genitrice nell'ambiente
+o opzioni abilitate all'invocazione (sia per default che con argo-
menti da riga di comando) o da set
+o opzioni abilitate da shopt
+o alias di shell definiti da alias
+o vari ID di processo, inclusi quelli dei job in background, il
valore di $$ e il valore di $PPID
Quando un comando semplice, diverso da una funzione incorporata o da
una funzione di shell, dev'essere eseguito, viene invocato in un ambi-
ente di esecuzione separato che comprende tutto quello che viene illus-
trato qui di seguito. Se non altrimenti notato, i valori sono eredi-
tati dalla shell.
+o i file aperti della shell, pi qualsiasi modificazione e aggiunta
specificata dalle ridirezioni al comando
+o la directory di lavoro corrente
+o la maschera del modo di creazione dei file
+o variabili di shell e funzioni dichiarate esportabili, insieme
alle variabili esportate per il comando, passate nell'ambiente
+o i segnali da intercettare come da comando trap dalla shell sono
riportati ai valori ereditati dalla shell genitrice, e i segnali
ignorati dalla shell vengono ignorati
Un comando invocato in quest'ambiente separato non pu influenzare
l'ambiente di esecuzione della shell [genitrice].
Sostituzione di comando, comandi raggruppati fra parentesi e comandi
asincroni sono invocati in un ambiente di subshell che un duplicato
dell'ambiente di shell, con l'eccezione che i segnali intercettati
dalla shell sono riportati ai valori che la shell eredita dalla shell
genitrice all'invocazione. I comandi incorporati che sono invocati
come parte di una pipeline sono anch'essi eseguiti in un ambiente di
subshell. Modifiche fatte all'ambiente di subshell non possono
influenzare l'ambiente di esecuzione della shell [genitrice].
Se un comando invocato da un & e il job-control non attivo, lo stan-
dard input di default per il comando il file vuoto /dev/null. Altri-
menti il comando invocato eredita i descrittori di file della shell
chiamante come modificati dalle ridirezioni.
Quando viene invocato un programma gli viene dato un array di stringhe
chiamato [insieme delle variabili di] ambiente. Questa una lista di
coppie nome-valore, della forma nome=valore.
La shell consente di manipolare l'ambiente in molti modi. All'invo-
cazione, la shell esamina il suo ambiente e crea un parametro per ogni
nome trovato, marcandolo automaticamente per essere esportato ai pro-
cessi figli. I comandi eseguiti ereditano l'ambiente. I comandi
export e declare -x permettono di aggiungere o togliere dall'ambiente
parametri e funzioni. Se il valore di un parametro d'ambiente viene
modificato, il nuovo valore diventa parte dell'ambiente, sostituendo il
valore precedente. L'ambiente ereditato da qualsiasi comando eseguito
costituito dall'ambiente iniziale della shell, i cui valori possono
essere modificati nella shell, diminuiti di ogni coppia rimossa dal
comando unset, e aumentati da ogni aggiunta attraverso i comandi export
e declare -x .
L'ambiente per qualsiasi comando semplice o funzione pu essere ampliato
temporaneamente premettendo degli assegnamenti di parametro al comando
stesso, come descritto prima in PARAMETRI. Queste istruzioni di asseg-
namento influenzano solo l'ambiente utilizzato da quel comando.
Se impostata l'opzione -k (si veda il comando incorporato set pi
avanti), tutti gli assegnamenti di parametro sono resi disponibili
nell'ambiente del comando, non solo quelli che precedono il nome del
comando.
Quando bash invoca un comando esterno, la variabile _ viene impostata
al nome completo del percorso del comando, e passato a quel comando nel
suo ambiente.
Ai fini della shell, un comando che termina con uno stato d'uscita zero
ha avuto successo. Uno stato d'uscita pari a zero indica successo.
Uno stato d'uscita diverso da zero indica errore. Quando un comando
termina su un segnale fatale N, bash usa il valore di 128+N come stato
d'uscita.
Se un comando non viene trovato, il processo figlio creato per
eseguirlo ritorna uno stato pari a 127. Se un comando viene trovato ma
non eseguibile lo stato di ritorno 126.
Se un comando non ha successo a causa di un errore durante l'espansione
o la ridirezione, lo stato d'uscita maggiore di zero.
I comandi incorporati della shell restituiscono uno stato di 0 (vero)
in caso di successo, e diverso da zero (falso) in caso di errore
durante l'esecuzione. Tutti i comandi incorporati restituiscono uno
stato d'uscita di 2 per indicare l'uso scorretto.
Bash stessa ritorna lo stato d'uscita dell'ultimo comando eseguito, a
meno che non avvenga un errore di sintassi, nel qual caso essa esce con
un valore diverso da zero. Si veda anche il comando incorporato exit
pi avanti.
Quando bash interattiva, in assenza di ogni segnale da intercettare
col comando trap, ignora SIGTERM (cos che kill 0 non uccide una shell
interattiva), e SIGINT viene intercettato e gestito (cos che il comando
incorporato wait interrompibile). In tutti i casi, bash ignora
SIGQUIT. Se si usa il job-control, bash ignora SIGTTIN, SIGTTOU, e
SIGTSTP.
I comandi non incorporati invocati da bash hanno i gestori di segnali
impostati sui valori ereditati dalla shell dalla sua genitrice. Quando
non si usa il job-control, i comandi asincroni ignorano SIGINT e
SIGQUIT. in aggiunta a questi gestori ereditati. I comandi eseguiti
come risultato di una sostituzione di comando ignorano i segnali di
job-control generati da tastiera SIGTTIN, SIGTTOU, e SIGTSTP.
La shell esce per default al ricevimento di un SIGHUP. Prima di
uscire, una shell interattiva ri-invia un segnale SIGHUP a tutti i job
[richiesti tramite job-control], in esecuzione o sospesi. Ai job
sospesi viene inviato un segnale SIGCONT per essere sicuri che ricevano
il segnale SIGHUP. Per prevenire l'invio del segnale da parte della
shell a un particolare job, quest'ultimo dovrebbe essere rimosso dalla
tabella dei job col comando incorporato disown (si veda COMANDI INCOR-
PORATI DELLA SHELL pi avanti) o contrassegnato per non ricevere SIGHUP
usando disown -h.
Se l'opzione di shell huponexit
stata impostata con shopt, bash invia un segnale SIGHUP a tutti i job
quando una shell di login interattiva esce.
Se bash in attesa che un comando finisca e riceve un segnale per il
quale stato impostata un'intercettazione di segnale, il comando rela-
tivo alla gestione del segnale viene eseguito solo al termine del
comando. Quando bash in attesa della fine di un comando asincrono
attraverso il comando incorporato wait, la ricezione di un segnale per
il quale un'intercettazione di segnale stata impostata fa s che il
comando incorporato wait termini immediatamente con uno stato d'uscita
maggiore di 128, e immediatamente dopo viene innescata la gestione del
segnale intercettato.
Il termine job-control si riferisce alla capacit di fermare
(sospendere) selettivamente l'esecuzione di processi e continuare
(riprendere) la loro esecuzione in seguito. Tipicamente, un utente
utilizza questa possibilit attraverso un'interfaccia interattiva costi-
tuita congiuntamente dal driver del terminale di sistema e da bash.
La shell associa un job a ogni pipeline. Essa mantiene una tabella dei
job correntemente in esecuzione, che pu essere visualizzata con il
comando jobs. Quando bash avvia un job in modo asincrono (in back-
ground), stampa una riga tipo:
[1] 25647
che indica che questo job il job numero 1 e che l'ID di processo
dell'ultimo processo nella pipeline associata a questo job 25647.
Tutti i processi in una singola pipeline fanno parte dello stesso job.
Bash usa l'astrazione job come base per il job-control.
Per facilitare l'implementazione dell'interfaccia utente per il job-
control, il sistema mantiene la nozione di ID del gruppo di processi
del terminale corrente. I membri di questo gruppo di processo (pro-
cessi il cui ID del gruppo di processo uguale all'ID del gruppo di
processo del terminale corrente) ricevono segnali generati da tastiera,
come SIGINT. Si dice che questi processi sono in primo piano (fore-
ground - oppure sincroni). I processi in background (sullo sfondo -
oppure asincroni) sono quelli il cui ID del gruppo di processo dif-
ferisce da quello del terminale; tali processi sono immuni dai segnali
generati da tastiera. Solo ai processi in foreground permesso di leg-
gere o scrivere sul terminale. Ai processi in background che tentano
di leggere (scrivere) sul terminale inviato un segnale SIGTTIN (SIGT-
TOU) dal driver del terminale, che, se non intercettato, sospende il
processo.
Se il sistema operativo sul quale bash
in esecuzione supporta il job-control bash
in grado di utilizzarlo. Battere il carattere di sospensione (tipica-
mente ^Z, Control-Z) mentre un processo in esecuzione, provoca la
sospensione di quel processo e restituisce il controllo a bash . Bat-
tere il carattere di sospensione ritardata (tipicamente ^Y, Control-Y)
provoca la sospensione del processo quando questo tenta di leggere
input dal terminale, e la restituzione del controllo a bash. Si pu poi
cambiare lo stato di questo job, usando il comando bg per continuarlo
in background, il comando fg per riportarlo in foreground, o il comando
kill per farlo terminare. Un ^Z ha effetto immediatamente, e ha
l'effetto collaterale di causare la perdita dell'output in sospeso e
del "type ahead" [caratteri immessi a terminale ma non ancora passati
al programma].
Vi sono diversi modi per riferirsi a un job nella shell. Il carattere
% designa un nome di job. Un job con numero n pu essere indicato come
%n. Un job pu anche essere indicato usando un prefisso del nome usato
per avviarlo, o usando una substringa che appare nella sua riga di
comando. Per esempio, %ce si riferisce a un job ce sospeso. Se un
prefisso corrisponde a pi di un job, bash restituisce un messaggio di
errore. L'uso di %?ce, d'altra parte, indica qualsiasi job che con-
tiene la stringa ce nella sua riga di comando. Se la substringa
corrisponde a pi di un job, bash restituisce un messaggio di errore. I
simboli %% e %+ si riferiscono alla nozione della shell del job cor-
rente, ossia l'ultimo job sospeso mentre era in foreground o avviato in
background. Il job precedente pu essere referenziato usando %-.
Nell'output che riguarda i job (per esempio, l'output del comando
jobs), il job corrente sempre segnalato con un +, ed il job precedente
con un -. Un singolo % (senza alcuna specificazione associata) pure
un modo per designare il job corrente.
La semplice menzione di un job pu essere usata per riportarlo in fore-
ground: %1
un sinonimo per ``fg %1'', che porta il job 1 dal background al fore-
ground. Nello stesso modo, ``%1 &'' riprende l'esecuzione del job 1 in
background, ossia equivale a ``bg %1''.
La shell viene notificata immediatamente ogni volta che un job cambia
stato. Normalmente, bash aspetta finch non deve stampare un prompt
prima di informare dei cambiamenti nello stato di un job, in modo da
non interrompere alcun altro output. Se l'opzione -b del comando
incorporato set
impostata, bash riporta tali cambiamenti immediatamente. Delle even-
tuali istruzioni di intercettazione del segnale SIGCHLD viene eseguita
per ogni processo figlio che esce.
Se si tenta di uscire da bash mentre vi sono dei job sospesi, la shell
stampa un messaggio di avvertimento. Si pu quindi usare il comando
jobs per controllare il loro stato. Se si fa un secondo tentativo per
uscire senza immettere alcun altro comando, non si riceve pi il messag-
gio di avvertimento e i job sospesi vengono terminati.
Quando eseguita interattivamente, bash mostra il prompt primario PS1
quando pronta per leggere un comando, e il prompt secondario PS2
quando in attesa di altro input per completare un comando. Bash per-
mette di personalizzare queste stringhe di prompt inserendo un certo
numero di caratteri speciali preceduti da backslash che sono decodifi-
cati come segue:
\a un carattere ASCII di allarme (07) [campanello o bip]
\d la data nel formato "Giorno-della-settimana Mese Giorno"
(ad es., "Tue May 26")
\D{formato}
il formato viene passato a strftime(3) e il risultato
inserito nella stringa di prompt; un formato vuoto genera
una rappresentazione di data/ora specifica della localiz-
zazione. Le parentesi graffe sono obbligatorie
\e un carattere ASCII di escape (033)
\h il nome dell'host fino al primo `.'
\H il nome dell'host
\j il numero di job attualmente gestiti dalla shell
\l il basename [nome all'interno della directory] del termi-
nale in cui eseguita la shell
\n newline [su una nuova linea, ossia il prompt pu essere su
pi linee]
\r carriage return [a inizio linea, ma non su una nuova
linea]
\s il nome della shell, il basename [nome all'interno della
directory] di $0 (la parte che segue l'ultima barra [/])
\t l'ora corrente nel formato HH:MM:SS 24 ore
\T l'ora corrente nel formato HH:MM:SS 12 ore
\@ l'ora corrente nel formato am/pm 12 ore
\A l'ora corrente nel formato HH:MM 24 ore
\u il nome-utente dell'utente corrente
\v la versione di bash (ad es., 2.00)
\V la release di bash, versione + livello di patch (ad es.,
2.00.0)
\w la directory di lavoro corrente con HOME abbreviato con
una tilde
\W il basename della directory di lavoro corrente, con HOME
abbreviato con una tilde
\! il numero nella cronologia del comando attuale
\# il numero di comando del comando attuale
\$ se l'UID effettivo 0, un #, altrimenti un $
\nnn il carattere [ASCII] che corrisponde al numero ottale nnn
\\ un backslash
\[ marca l'inizio di una sequenza di caratteri non stampa-
bili, che pu essere usata per includere nel prompt una
sequenza di controllo del terminale
\] marca la fine di una sequenza di caratteri non stampabili
Il numero del comando e il numero nella cronologia sono generalmente
differenti: il numero della cronologia di un comando la sua posizione
nella lista della cronologia, la quale pu includere comandi
preesistenti nel file di cronologia (si veda CRONOLOGIA pi avanti),
mentre il numero del comando la posizione nella sequenza dei comandi
eseguiti durante la corrente sessione di shell. Dopo che la stringa
decodificata, essa espansa attraverso l'espansione di parametro, la
sostituzione di comando, l'espansione aritmetica e la rimozione dei
caratteri di quotatura, secondo quanto specificato dal valore
dell'opzione di shell promptvars (si veda pi avanti la descrizione del
comando shopt sotto COMANDI INCORPORATI DELLA SHELL ).
Questa la libreria che gestisce la lettura dell'input quando si usa
una shell interattiva, a meno che non si specifichi l'opzione --noedit-
ing all'invocazione della shell. Per default, i comandi per l'editor
della riga comandi sono simili a quelli di emacs. anche disponibile
un'interfaccia per editor di riga in stile vi. Per chiudere l'inter-
faccia per l'editor di riga dopo l'esecuzione della shell utilizzare
l'opzione -B +o emacs o +o vi del comando incorporato set (si veda
COMANDI INCORPORATI DELLA SHELL pi avanti).
Notazione readline
In questa sezione, si usa la notazione in stile emacs per indicare i
tasti da battere. I tasti di controllo sono indicati da C-tasto, per
esempio, C-n significa Control-N. In modo simile, i meta tasti sono
indicati da M-tasto, cio M-x significa Meta-X. (Sulle tastiere senza
un tasto meta , M-x significa ESC x, cio, si preme il tasto Escape e
poi il tasto x . Questo rende ESC il meta prefisso. La combinazione
M-C-x significa ESC-Control-x, ossia si preme il tasto Escape poi si
tiene il tasto Control mentre si preme il tasto x ).
Ai comandi readline possono essere specificati argomenti numerici che
normalmente sono dei contatori di ripetizione. A volte, tuttavia, il
segno dell'argomento a essere significativo. Passando un argomento
negativo a un comando che agisce in avanti (ad es., kill-line), il
comando agisce nella direzione opposta. I comandi il cui comportamento
con gli argomenti diverso da questo sono indicati pi avanti.
Quando un comando descritto come eliminazione di testo, il testo can-
cellato viene salvato per un possibile riutilizzo futuro (yanking). Il
testo eliminato viene salvato in un kill-ring. Eliminazioni consecu-
tive provocano l'accumulazione del testo in una unit, che pu essere
recuperata tutta in una volta. Comandi che non eliminano testo sepa-
rano parti di testo nel kill-ring.
Inizializzazione di Readline
Readline personalizzata inserendo comandi in un file di inizializ-
zazione (il file inputrc ). Il nome di questo file preso dal valore
della variabile INPUTRC . Se questa variabile non definita il valore
di default ~/.inputrc. Quando un programma che usa la libreria read-
line viene avviato, viene letto il file di inizializzazione, e vengono
impostate le associazioni di tasti e assegnate le variabili. Ci sono
solo alcuni costrutti base consentiti nel file d'inizializzazione di
readline. Le righe vuote sono ignorate. Le righe che iniziano con un
# sono commenti. Le righe che iniziano con un $ indicano costrutti
condizionali. Le altre righe indicano associazioni di tasti e
impostazioni di variabili.
Le associazioni di tasti di default possono essere cambiate con un file
inputrc . Altri programmi che usano questa libreria possono aggiungere
i loro propri comandi e associazioni.
Per esempio, porre
M-Control-u: universal-argument
o
C-Meta-u: universal-argument
nel file inputrc farebbe eseguire a M-C-u il comando della readline
universal-argument .
Sono riconosciuti i seguenti nomi simbolici di carattere: RUBOUT, DEL,
ESC, LFD, NEWLINE, RET, RETURN, SPC, SPACE e TAB.
In aggiunta al nome del comando, readline consente che a un tasto cor-
risponda una stringa che inserita quando quel tasto premuto (una
macro).
Associazioni di tasti readline
La sintassi per il controllo delle associazioni dei tasti nel file
inputrc
semplice. Tutto quel che richiesto il nome del comando o il testo
di una macro e una sequenza di tasti alla quale dovr essere associato.
Il nome pu essere specificato in uno di due modi: come nome simbolico
di un tasto, eventualmente con i prefissi Meta- o Control-, o come una
sequenza di tasti.
Quando si usa la forma nome-tasto:nome-funzione o macro, nome-tasto
il nome di un tasto in inglese. Per esempio:
Control-u: universal-argument
Meta-Rubout: backward-kill-word
Control-o: "> output"
Negli esempi precedenti, C-u viene collegato alla funzione univer-
sal-argument, M-DEL viene collegato alla funzione backward-kill-word, e
C-o viene collegato all'esecuzione della macro indicata sul lato destro
(cio, inserire il testo ``> output'' nella riga).
Nella seconda forma, "sequenza-tasti":nome-funzione o macro,
sequenza-tasti differisce da nome-tasto visto sopra, per il fatto che
la stringa che denota un'intera sequenza di tasti pu essere specificata
ponendo la sequenza fra virgolette. Alcuni tasti di protezione
(escape) nello stile GNU Emacs possono essere usati, come nei seguenti
esempi, ma i nomi simbolici dei caratteri non si possono utilizzare.
"\C-u": universal-argument
"\C-x\C-r": re-read-init-file
"\e[11~": "Function Key 1"
In questo esempio, C-u viene ancora collegato alla funzione univer-
sal-argument. C-x C-r viene collegato alla funzione re-read-init-file,
e ESC [ 1 1 ~ viene collegato all'inserimento del testo ``Function Key
1''.
L'insieme completo delle sequenze di protezione (escape) in stile GNU
Emacs
\C- prefisso control
\M- prefisso meta
\e un carattere di escape
\\ backslash
\" il carattere "
\' il carattere '
In aggiunta alle sequenze di protezione che iniziano col tasto escape
in stile GNU Emacs, disponibile un secondo insieme di sequenze di pro-
tezione che iniziano con il backslash:
\a avviso (segnale acustico)
\b backspace
\d cancella [delete - tasto Del o Canc]
\f form feed [salto pagina]
\n newline [nuova linea]
\r carriage return [a inizio linea]
\t tabulazione orizzontale
\v tabulazione verticale
\nnn il carattere a otto bit il cui valore rappresentato dal
valore ottale nnn (da una a tre cifre ottali)
\xHH il carattere a otto bit il cui valore rappresentato dal
valore esadecimale HH (una o due cifre esadecimali)
Quando si inserisce il testo di una macro, apostrofi o virgolette
devono essere usati per indicare una definizione di macro. Un testo
non quotato si suppone essere [che sia] un nome di funzione. Nel corpo
della macro, i segni di protezione backslash descritti prima vengono
espansi. Il backslash quota qualsiasi altro carattere nel testo della
macro, inclusi " e '.
Bash permette di mostrare o modificare le associazioni correnti dei
tasti di readline con il comando incorporato bind . Il modo di editing
pu essere cambiato durante l'uso interattivo usando l'opzione -o del
comando incorporato set (si veda COMANDI INCORPORATI DELLA SHELL pi
avanti).
Variabili readline
Readline ha delle variabili che possono essere usate per personalizzare
ulteriormente il suo comportamento. Una variabile pu essere impostata
nel file inputrc con un'istruzione della forma
set nome-di-variabile valore
Tranne dove diversamente indicato, le variabili di readline possono
avere i valori On o Off (senza distinzione fra maiuscole e minuscole).
I nomi di variabile non riconosciuti vengono ignorati. Quando viene
letto un valore di variabile, i valori vuoti o nulli, "on" (senza dis-
tinzione fra maiuscole e minuscole) o "1" sono equivalenti a On. Tutti
gli altri valori sono equivalenti a Off. Le variabili e i loro valori
di default sono:
bell-style (audible)
Controlla cosa succede se readline vuole usare il segnalatore
acustico del terminale. Se impostato a none, readline non
emette alcun segnale. Se impostato a visible, readline usa un
segnalatore visivo se disponibile. Se impostato a audible,
readline tenta di attivare il segnalatore acustico del termi-
nale.
bind-tty-special-chars (On)
Se impostato a On, readline tenta di associare i caratteri di
controllo trattati in modo speciale dal driver del terminale nel
kernel agli equivalenti degli stessi come descritti da readline.
comment-begin (``#'')
La stringa che inserita quando eseguito il comando insert-com-
ment . Questo comando associato a M-# in modalit comandi Emacs
e a # in modalit comandi di vi.
completion-ignore-case (Off)
Se impostato a On, readline effettua l'individuazione dei nomi
di file e il completamento seza distinguere le lettera maiuscole
dalle lettere minuscole.
completion-query-items (100)
Questo determina a che punto interpellare l'utente per visualiz-
zare i possibili completamenti generati dal comando possi-
ble-completions. Pu essere impostato a un numero intero mag-
giore o uguale a zero. Se il numero di possibili completamenti
maggiore o uguale al valore di questa variabile, all'utente
viene chiesto se desidera o meno vederli; altrimenti essi sono
semplicemente elencati sul terminale.
convert-meta (On)
Se impostato a On, readline converte i caratteri con l'ottavo
bit uguale a 1 a una sequenza di caratteri ASCII eliminando
l'ottavo bit e aggiungendo come prefisso un carattere di pro-
tezione (in pratica, usando l'escape come prefisso meta).
disable-completion (Off)
Se impostato a On, readline inibisce il completamento della
parola. I caratteri di completamento saranno inseriti nella
riga come se fossero stati mappati come self-insert.
editing-mode (emacs)
Controlla se readline parte con un insieme di associazioni di
tasti simile a emacs o vi. editing-mode pu essere impostato a
emacs o a vi.
enable-keypad (Off)
Quando impostato a On, readline tenta di abilitare il tastierino
numerico se viene utilizzato. Alcuni sistemi richiedono questo
per abilitare i tasti-freccia.
expand-tilde (Off)
Se impostato a on, l'espansione della tilde effettuata quando
readline tenta il completamento della parola.
history-preserve-point (Off)
Se impostato a on, il codice che implementa la cronologia tenta
di piazzare il cursore nel punto in cui si trovava su ogni riga
della cronologia visualizzata con previous-history o next-his-
tory.
horizontal-scroll-mode (Off)
Quando impostato a On, richiede a readline di usare una sola
riga per la visualizzazione, effettuando lo scroll dell'input in
orizzontale su una sola riga dello schermo quando essa risulti
pi lunga della larghezza dello schermo, invece che andando a
capo su una nuova riga.
input-meta (Off)
Se impostato a On, readline abilita l'input a otto bit (cio, non
toglie il bit pi alto dai caratteri che legge), indipendente-
mente da quello che il terminale dichiara di supportare. Il
nome meta-flag
un sinonimo per questa variabile.
isearch-terminators (``C-[C-J'')
Una stringa di caratteri che fa terminare una ricerca incremen-
tale senza eseguire successivamente il carattere come se fosse
un comando. Se a questa variabile non stato dato un valore, i
caratteri ESC and C-J fanno terminare una ricerca incrementale.
keymap (emacs)
Imposta la mappa corrente dei tasti di readline. Il set dei
nomi validi per le mappe dei tasti emacs, emacs-standard,
emacs-meta, emacs-ctlx, vi, vi-command e vi-insert. vi equiva-
lente a vi-command; emacs equivalente a emacs-standard. Il
valore di default emacs; il valore di editing-mode determina
anche la mappa dei tasti di default.
mark-directories (On)
Se impostata a On, ai nomi delle directory completate aggiunta
una barra [/] alla fine.
mark-modified-lines (Off)
Se impostato a On, le righe della cronologia che sono state mod-
ificate sono mostrate precedute da un asterisco (*).
mark-symlinked-directories (Off)
Se impostato a On, i nomi completati che sono collegamenti sim-
bolici a directory hanno una barra [/] alla fine (se richiesto
tramite mark-directories).
match-hidden-files (On)
Questa variabile, se impostata a On, fa s che readline mostri
anche i file i cui nomi iniziano con un `.' (file nascosti)
quando effettua il completamento del nome di file, a meno che il
`.' iniziale non sia fornito dall'utente come parte del nome di
file da completare.
output-meta (Off)
Se impostato a On, readline mostra i caratteri con l'ottavo bit
impostato direttamente, piuttosto che con una sequenza di pro-
tezione avente come prefisso meta.
page-completions (On)
Se impostato a On, readline usa un paginatore interno simile a
more per mostrare i possibili completamenti una schermata alla
volta.
print-completions-horizontally (Off)
Se impostato a On, readline mostra i completamenti ordinati in
ordine alfabetico orizzontalmente, piuttosto che dall'alto in
basso.
show-all-if-ambiguous (Off)
Questo cambia il comportamento di default delle funzioni di com-
pletamento. Se impostato a on, le parole che hanno pi di un
possibile completamento provocano la visualizzazione immediata
delle coincidenze invece che l'attivazione del segnalatore acus-
tico.
show-all-if-unmodified (Off)
Questo cambia il comportamento di default delle funzioni di com-
pletamento in maniera simile a show-all-if-ambiguous. Se
impostato a on, le parole che hanno pi di un possibile completa-
mento senza alcun possibile completamento parziale (ovvero i
possibili completamenti non hanno alcun prefisso in comune) sono
elencate immediatamente invece che provocare l'attivazione del
segnalatore acustico.
visible-stats (Off)
Se impostato a On, un carattere che denota un tipo di file come
riportato da stat(2) accodato al nome di file durante l'elen-
cazione dei possibili completamenti.
Costrutto condizionale di readline
Readline implementa un servizio simile, nello spirito, a quello della
compilazione condizionale nel preprocessore C, e che permette di effet-
tuare associazioni di tasti e impostazioni di variabili in base al
risultato di test. Vi sono tre direttive di controllo usate.
$if Il costrutto $if permette che le associazioni siano fatte in
base al modo di editing, al terminale in uso o all'applicazione
che fa uso di readline. Il testo da verificare arriva fino alla
fine della riga; nessun carattere che lo delimiti richiesto.
mode La forma mode= della direttiva $if usata per verificare
se readline in modo emacs o vi. Questo pu essere usato
in congiunzione con il comando set keymap, per esempio,
per impostare le associazioni delle mappe dei tasti di
emacs-standard e emacs-ctlx solo se readline avviata in
modo emacs.
term La forma term= pu essere usata per includere associazioni
di tasti specifiche per un terminale, magari per asso-
ciare le sequenze di tasti emesse dai tasti funzione dei
terminali. La parola a destra dell' = viene confrontata
con il nome completo del terminale e la parte del nome
del terminale che precede il primo -. Questo permette a
sun di essere trovare corrispondenza sia con sun che con
sun-cmd, ad esempio.
application
Il costrutto application usato per includere
impostazioni specifiche per un'applicazione. Ogni pro-
gramma che usa la libreria readline imposta il nome
applicazione, e un file di inizializzazione pu poi fare
un test per un particolare valore. Questo pu essere
usato per associare sequenze di tasti a funzioni utili
per uno specifico programma. Per esempio, il comando
seguente aggiunge una sequenza di tasti che quota la
parola corrente o la parola precedente in Bash:
$if Bash
# Quota la parola corrente o precedente
"\C-xq": "\eb\"\ef\""
$endif
$endif Questo comando, come si visto nell'esempio precedente, fa ter-
minare un comando $if.
$else I comandi in questa parte della direttiva $if sono eseguiti se
il test non risulta verificato.
$include
Questa direttiva prende un unico nome di file come argomento e
legge comandi e associazioni da quel file. Per esempio, la
seguente direttiva legge /etc/inputrc:
$include /etc/inputrc
Ricerca
Readline dotato di comandi per cercare nella cronologia dei comandi
(si veda CRONOLOGIA pi avanti) righe contenenti una stringa specifica.
Ci sono due modalit di ricerca: incrementale e non-incrementale.
La ricerca incrementale inizia prima che l'utente abbia finito di
immettere la stringa di ricerca. Mentre ogni carattere della stringa
di ricerca viene battuto, readline mostra la prima linea dalla cronolo-
gia che corrisponde alla stringa battuta finora. Una ricerca incremen-
tale richiede solamente il numero minimo di caratteri necessari per
trovare l'elemento della cronologia desiderato. I caratteri presenti
nel valore della variabile isearch-terminators sono usati per delim-
itare una ricerca incrementale. Se a quella variabile non stata
assegnato un valore i caratteri di Escape e Control-J fanno arrestare
una ricerca incrementale. Control-G interrompe una ricerca incremen-
tale e ripristina la riga originale. Quando terminata la ricerca,
l'elemento della cronologia contenente la stringa di ricerca diventa la
riga corrente.
Per trovare altri elementi nell'elenco della cronologia, battere Con-
trol-S o Control-R secondo il caso. Viene eseguita cos una ricerca
all'indietro o in avanti nella cronologia del successivo elemento che
corrisponde alla stringa di ricerca che stata immessa. Ogni altra
sequenza di tasti associata a un comando readline pone termine alla
ricerca ed esegue il comando presente nella linea. Per esempio, un
newline provoca l'interruzione della ricerca e accetta la riga,
eseguendo cos il comando proveniente dall'elenco della cronologia.
Readline ricorda l'ultima stringa di ricerca incrementale. Se due Con-
trol-R vengono battuti senza che siano intervenuti caratteri che
definiscono una nuova stringa di ricerca, viene utilizzata la stringa
di ricerca memorizzata al momento.
Le ricerche non incrementali leggono l'intera stringa di ricerca prima
di avviare la ricerca per individuare righe nella cronologia. La
stringa di ricerca pu essere battuta dall'utente o essere parte del
contenuto della riga corrente.
Nomi di comando readline
La seguente una lista di nomi dei comandi e delle sequenze di tasti di
default a cui essi sono collegati. Nomi di comando senza una sequenza
di tasti collegata a essi sono scollegati per default. Nelle
descrizioni seguenti, punto si riferisce alla posizione corrente del
cursore e marca alla posizione del cursore salvata col comando
set-mark. Il testo fra il punto e la marca indicato come regione.
Comandi di movimento
beginning-of-line (C-a)
Si sposta all'inizio della riga corrente.
end-of-line (C-e)
Si sposta alla fine della riga.
forward-char (C-f)
Si sposta avanti di un carattere.
backward-char (C-b)
Si sposta indietro di un carattere.
forward-word (M-f)
Si sposta in avanti fino alla fine della parola successiva. Le
parole sono composte di caratteri alfanumerici (lettere e
cifre).
backward-word (M-b)
Si sposta indietro all'inizio della parola corrente o prece-
dente. Le parole sono composte di caratteri alfanumerici (let-
tere e cifre).
clear-screen (C-l)
Pulisce lo schermo lasciando la riga corrente in cima allo
schermo. Con un argomento, rinfresca la riga corrente senza
ripulire lo schermo.
redraw-current-line
Rinfresca la riga corrente.
Comandi per manipolare la cronologia
accept-line (Newline, Return)
Accetta la riga senza curarsi di dove sia il cursore. Se questa
riga non
vuota, aggiunta alla lista della cronologia in accordo con lo
stato della variabile HISTCONTROL. Se la riga una riga di
cronologia modificata, allora ripristina la riga di cronologia
al suo stato originale.
previous-history (C-p)
Prende il precedente comando dalla lista della cronologia, spo-
standosi indietro nella lista.
next-history (C-n)
Prende il successivo comando dalla lista della cronologia, spo-
standosi avanti nella lista.
beginning-of-history (M-<)
Si sposta alla prima riga nella cronologia.
end-of-history (M->)
Si sposta alla fine della cronologia dell'input, cio, alla riga
che si sta inserendo.
reverse-search-history (C-r)
Cerca all'indietro partendo dalla riga corrente spostandosi in
`su' attraverso la cronologia come necessario. Questa una
ricerca incrementale.
forward-search-history (C-s)
Cerca in avanti partendo dalla riga corrente e spostandosi in
`gi' attraverso la cronologia come necessario. Questa una
ricerca incrementale.
non-incremental-reverse-search-history (M-p)
Cerca all'indietro attraverso la cronologia, partendo dalla riga
corrente, una stringa fornita dall'utente, usando una ricerca
non incrementale.
non-incremental-forward-search-history (M-n)
Cerca in avanti attraverso la cronologia una stringa fornita
dall'utente, usando una ricerca non incrementale.
history-search-forward
Cerca in avanti attraverso la cronologia una stringa di carat-
teri tra l'inizio della riga corrente e il punto del cursore.
Questa una ricerca non incrementale.
history-search-backward
Cerca all'indietro attraverso la cronologia una stringa di
caratteri tra l'inizio della riga corrente e il punto del cur-
sore. Questa una ricerca non incrementale.
yank-nth-arg (M-C-y)
Inserisce il primo argomento del comando precedente (general-
mente la seconda parola sulla riga precedente) alla posizione
del cursore. Con un argomento n, inserisce la n-sima parola del
comando precedente (le parole nel comando precedente iniziano
con la parola 0). Un argomento negativo inserisce la n-sima
parola dalla fine del comando precedente. Una volta che l'argo-
mento n calcolato, l'argomento estratto come se l'espansione
della cronologia "!n" sia stata specificata.
yank-last-arg (M-., M-_)
Inserisce l'ultimo argomento del comando precedente (l'ultima
parola della precedente riga di cronologia). Con un argomento,
si comporta esattamente come yank-nth-arg. Chiamate consecutive
a yank-last-arg percorrono l'elenco della cronologia all'indi-
etro, inserendo ogni volta l'ultimo argomento di ogni riga. I
servizi dell'espansione della cronologia sono usati per estrarre
l'ultimo argomento, come se fosse stata specificata l'espansione
della cronologia "!$".
shell-expand-line (M-C-e)
Espande la riga nello stesso modo in cui lo fa la shell. Questo
effettua l'espansione degli alias e della cronologia cos come
tutte le espansioni di parola della shell. Si veda ESPANSIONE
DELLA CRONOLOGIA pi avanti per una descrizione dell'espansione
della cronologia.
history-expand-line (M-^)
Effettua l'espansione della cronologia sulla riga corrente. Si
veda ESPANSIONE DELLA CRONOLOGIA pi avanti per una descrizione
dell'espansione della cronologia.
magic-space
Effettua l'espansione della cronologia sulla riga corrente e
inserisce uno spazio. Si veda ESPANSIONE DELLA CRONOLOGIA pi
avanti per una descrizione dell'espansione della cronologia.
alias-expand-line
Effettua l'espansione degli alias sulla riga corrente. Si veda
ALIAS sopra per una descrizione dell'espansione degli alias.
history-and-alias-expand-line
Effettua l'espansione della cronologia e degli alias sulla riga
corrente.
insert-last-argument (M-., M-_)
Un sinonimo di yank-last-arg.
operate-and-get-next (C-o)
Accetta la riga corrente per l'esecuzione e prende dalla
cronologia la riga successiva a quella corrente, per l'editing.
Qualsiasi argomento viene ignorato.
edit-and-execute-command (C-xC-e)
Invoca un editor sulla riga di comando corrente ed esegue il
risultato come comandi di shell. Bash tenta di invocare
$FCEDIT, $EDITOR e emacs come editor, in quest'ordine.
Comandi per cambiare il testo
delete-char (C-d)
Cancella il carattere nel punto del cursore. Se il punto
all'inizio della riga, non vi alcun carattere nella riga, e
l'ultimo carattere battuto non era associato a delete-char,
allora ritorna EOF.
backward-delete-char (Rubout)
Cancella il carattere dopo il cursore. Quando dato un argo-
mento numerico, salva il testo cancellato sul kill-ring.
forward-backward-delete-char
Cancella il carattere sotto il cursore, a meno che il cursore
non sia alla fine della riga, nel qual caso il carattere dietro
al cursore viene cancellato.
quoted-insert (C-q, C-v)
Aggiunge il successivo carattere battuto sulla riga in modo let-
terale. Questo il modo per inserire caratteri come C-q, per
esempio.
tab-insert (C-v TAB)
Inserisce un carattere tab.
self-insert (a, b, A, 1, !, ...)
Inserisce il carattere battuto.
transpose-chars (C-t)
Trascina il carattere prima del punto del cursore in avanti
sopra il carattere nel punto, spostando anche il punto in
avanti. Se il punto alla fine della riga, traspone i due
caratteri prima del punto. Argomenti negativi non hanno
effetto.
transpose-words (M-t)
Trascina la parola prima del punto del cursore dopo la parola
oltre il punto, spostando inoltre il punto sopra quella parola.
Se il punto alla fine della riga, allora traspone le ultime due
parole sulla riga.
upcase-word (M-u)
Rende maiuscola la parola corrente (o seguente). Con un argo-
mento negativo, opera sulla parola precedente, ma non sposta il
punto del cursore.
downcase-word (M-l)
Rende minuscola la parola corrente (o seguente). Con un argo-
mento negativo, opera sulla parola precedente, ma non sposta il
punto del cursore.
capitalize-word (M-c)
Rende maiuscola la prima lettera della parola corrente (o
seguente). Con un argomento negativo, opera sulla parola prece-
dente, ma non sposta il punto del cursore.
overwrite-mode
Alterna fra modalit inserimento e modalit di sovrascrittura.
Con un argomento numerico esplicito positivo passa alla modalit
sovrascrittura. Con un argomento numerico esplicito non posi-
tivo passa alla modalit inserimento. Questo comando riguarda
solo la modalit emacs; la modalit vi sovrascrive in modo
diverso. Ogni chiamata a readline() viene avviata in modalit
inserimento. In modalit sovrascrittura i caratteri associati a
self-insert sostituiscono il testo nel punto del cursore piut-
tosto che sospingere il testo verso destra. I caratteri asso-
ciati a backward-delete-char sostituiscono il carattere prima
del punto con uno spazio. Questo comando non associato per
default.
Eliminazione e recupero
kill-line (C-k)
Elimina il testo dal punto del cursore fino alla fine della
riga.
backward-kill-line (C-x C-Rubout)
Elimina all'indietro fino all'inizio della riga.
unix-line-discard (C-u)
Elimina all'indietro dal punto del cursore fino all'inizio della
riga. Il testo eliminato viene salvato nel kill-ring
kill-whole-line
Elimina tutti i caratteri sulla riga corrente, non importa dove
sia il punto del cursore.
kill-word (M-d)
Elimina dal punto del cursore fino alla fine della parola cor-
rente, o se tra parole, fino alla fine della successiva parola.
I delimitatori di parola sono gli stessi usati da forward-word.
backward-kill-word (M-Rubout)
Elimina la parola dietro il punto del cursore. I delimitatori
di parole sono gli stessi usati da forward-word.
unix-word-rubout (C-w)
Elimina la parola dietro il punto del cursore, usando gli spazi
bianchi come delimitatori di parola. Il testo eliminato sal-
vato nel kill-ring.
unix-filename-rubout
Elimina la parola prima del punto del cursore, usando uno spazio
bianco e il carattere barra [/] come delimitatori di parola. Il
testo eliminato salvato nel kill-ring.
delete-horizontal-space
Cancella tutti gli spazi e i tab attorno al punto del cursore.
kill-region
Elimina il testo nella regione corrente.
copy-region-as-kill
Copia il testo nella regione sul kill buffer.
copy-backward-word
Copia la parola prima del punto del cursore sul kill buffer. I
delimitatori di parola sono gli stessi di backward-word.
copy-forward-word
Copia la parola dopo il punto del cursore sul kill buffer. I
delimitatori di parola sono gli stessi di forward-word.
yank (C-y)
Copia il contenuto in cima al kill-ring e lo pone nel buffer nel
punto del cursore.
yank-pop (M-y)
Ruota il kill-ring, e copia la nuova cima. Funziona solo dopo
yank o yank-pop.
Argomenti numerici
digit-argument (M-0, M-1, ..., M--)
Aggiunge questa cifra all'argomento che sta gi accumulando, o
inizia un nuovo argomento. M-- avvia un argomento negativo.
universal-argument
Questo un altro modo per specificare un argomento. Se il
comando seguito da una o pi cifre, opzionalmente con un segno
meno iniziale, queste cifre definiscono l'argomento. Se il
comando seguito da cifre, eseguendo universal-argument di nuovo
termina l'argomento numerico, ma a parte questo viene ignorato.
Come caso speciale, se questo comando seguito immediatamente da
un carattere che che non n una cifra n un segno meno, il conta-
tore degli argomenti per il comando successivo moltiplicato per
quattro. Il contatore inizialmente uno, cos eseguendo questa
funzione la prima volta il contatore diventa quattro, la seconda
volta il contatore diventa sedici, e cos via.
Completamento
complete (TAB)
Tenta di effettuare il completamento del testo che precede il
punto del cursore. Bash tenta il completamento trattando il
testo, rispettivamente, come una variabile (se il testo inizia
con $), nome di utente (se il testo comincia con ~), nome di
host (se il testo comincia con @) o comando (inclusi alias e
funzioni). Se nessuna di questi produce una risultato, viene
tentato il completamento del nome di file.
possible-completions (M-?)
Elenca i possibili completamenti del testo che precede il punto
del cursore.
insert-completions (M-*)
Inserisce tutti i completamenti del testo che precede il punto
del cursore che sarebbero stati generati da possible-comple-
tions.
menu-complete
Simile a complete, ma sostituisce la parola da completare con
una corrispondenza singola dalla lista dei possibili completa-
menti. Un'esecuzione ripetuta di menu-complete scorre la lista
dei possibili completamenti, inserendo una corrispondenza alla
volta. Alla fine della lista dei completamenti viene emesso un
segnale acustico (dipendente dall'impostazione di bell-style) e
il testo originale ripristinato. Con un argomento n si sposta
di n posizioni in avanti nella lista dei completamenti individ-
uati; pu essere usato un argomento negativo per spostarsi
all'indietro nella la lista. Questo comando da associare nor-
malmente al tasto TAB, per non associato per default.
delete-char-or-list
Cancella il carattere sotto il cursore se non si trova
all'inizio o alla fine della riga (simile a delete-char). Se
alla fine della riga, si comporta in modo identico a possi-
ble-completions. Questo comando non associato per default.
complete-filename (M-/)
Tenta il completamento del nome del file sul testo che precede
il punto del cursore.
possible-filename-completions (C-x /)
Elenca i possibili completamenti del testo che precede il punto
del cursore, trattandolo come un nome di file.
complete-username (M-~)
Tenta il completamento del testo che precede il punto del cur-
sore, trattandolo come un nome di utente.
possible-username-completions (C-x ~)
Elenca i possibili completamenti del testo che precede il punto
del cursore, trattandolo come un nome di utente.
complete-variable (M-$)
Tenta il completamento del testo che precede il punto del cur-
sore, trattandolo come una variabile di shell.
possible-variable-completions (C-x $)
Elenca i possibili completamenti del testo che precede il punto
del cursore, trattandolo come una variabile di shell.
complete-hostname (M-@)
Tenta il completamento del testo che precede il punto del cur-
sore, trattandolo come un nome di host.
possible-hostname-completions (C-x @)
Elenca i possibili completamenti del testo che precede il punto
del cursore, trattandolo come un nome di host.
complete-command (M-!)
Tenta il completamento del testo che precede punto del cursore,
trattandolo come nome di comando. Il completamento di comando
tenta di far combaciare il testo confrontandolo con alias,
parole riservate, funzioni di shell, comandi incorporati di
shell e, da ultimo, nomi di file eseguibili, in quest'ordine.
possible-command-completions (C-x !)
Elenca i possibili completamenti del testo che precede il punto
del cursore, trattandolo come un nome di comando.
dynamic-complete-history (M-TAB)
Tenta il completamento del testo che precede il punto del cur-
sore, confrontando il testo con le righe della lista della
cronologia cercando le possibili corrispondenze di completa-
mento.
complete-into-braces (M-{)
Effettua il completamento del nome di file e insericse la lista
dei possibili completamenti racchiusi tra parentesi graffe, ren-
dendo la lista disponibile per la shell (si veda Espansione
delle parentesi graffe sopra).
Macro di tastiera
start-kbd-macro (C-x ()
Inizia a salvare i caratteri battuti nella corrente macro di
tastiera.
end-kbd-macro (C-x ))
Smette di salvare i caratteri battuti nella corrente macro di
tastiera e memorizza la definizione.
call-last-kbd-macro (C-x e)
Riesegue l'ultima macro di tastiera definita, facendo s che i
caratteri nella macro appaiano come se fossero stati battuti
sulla tastiera.
Varie
re-read-init-file (C-x C-r)
Legge il contenuto del file inputrc, e incorpora ogni associ-
azione o assegnamento di variabile che trova.
abort (C-g)
Annulla il corrente comando di editing ed emette il segnale
acustico del terminale (dipendente dall'impostazione di
bell-style).
do-uppercase-version (M-a, M-b, M-x, ...)
Se il carattere x battuto assieme al tasto Meta minuscolo,
esegue il comando collegato al corrispondente carattere maius-
colo.
prefix-meta (ESC)
Definisce come tasto Meta il successivo carattere battuto. ESC
f
equivalente a Meta-f.
undo (C-_, C-x C-u)
Undo incrementale, memorizzato separatamente per ogni riga.
revert-line (M-r)
Annulla tutti i cambiamenti fatti su questa riga. Questo come
eseguire il comando undo un numero di volte sufficiente a
riportare la riga al suo stato iniziale.
tilde-expand (M-&)
Effettua l'espansione della tilde sulla parola corrente.
set-mark (C-@, M-<space>)
Imposta la marca in corrispondenza del punto del cursore. Se
viene fornito un argomento numerico la marca viene impostato a
quella posizione.
exchange-point-and-mark (C-x C-x)
Scambia il punto del cursore con la marca. La posizione cor-
rente del cursore
impostata alla posizione salvata, e la vecchia posizione del
cursore salvata come marca.
character-search (C-])
Viene letto un carattere e il punto del cursore spostato
all'occorrenza successiva di quel carattere. Un contatore nega-
tivo cerca occorrenze precedenti.
character-search-backward (M-C-])
Viene letto un carattere e il punto del cursore spostato
all'occorrenza precedente di quel carattere. Un contatore nega-
tivo cerca occorrenze successive.
insert-comment (M-#)
Senza un argomento numerico il valore della variabile readline
comment-begin
inserito all'inizio della riga corrente. Se fornito un argo-
mento numerico questo comando agisce come un interruttore: se i
caratteri all'inizio della riga non corrispondono al valore di
comment-begin, il valore viene inserito, altrimenti i caratteri
in comment-begin vengono cancellati dall'inizio della riga. In
entrambi i casi la riga viene accettata come se fosse stato bat-
tuto un codice di fine riga (newline). Il valore di default di
comment-begin fa s che questo comando trasformi la riga corrente
in un commento di shell. Se un argomento numerico provoca la
rimozione del carattere di commento, la riga verr eseguita dalla
shell.
glob-complete-word (M-g)
La parola prima del punto del cursore trattata come un modello
per l'espansione del percorso, con un asterisco aggiunto alla
fine implicitamente. Questo modello viene usato per generare
una lista di nomi di file corrispondenti a possibili completa-
menti.
glob-expand-word (C-x *)
La parola prima del punto del cursore trattata come un modello
per l'espansione del percorso, e la lista dei nomi di file indi-
viduati viene inserita, sostituendo la parola. Se viene fornito
un argomento numerico viene aggiunto alla fine un asterisco
prima dell'espansione del percorso.
glob-list-expansions (C-x g)
Viene mostrata la lista delle espansioni che sarebbero state
generate da glob-expand-word e la riga ridisegnata. Se viene
fornito un argomento numerico, un asterisco aggiunto prima
dell'espansione del percorso.
dump-functions
Stampa tutte le funzioni e le loro associazioni di tasti sul
file di output di readline. Se fornito un argomento numerico,
l'output formattato in modo tale da poter essere inserito in un
file inputrc.
dump-variables
Stampa tutte le variabili readline impostabili e i loro valori
sul file di output di readline. Se viene fornito un argomento
numerico l'output formattato in modo tale da poter essere
inserito in un file inputrc.
dump-macros
Stampa tutte le sequenze di tasti readline associate a macro e
le stringhe da loro prodotte. Se viene fornito un argomento
numerico l'uscita formattata in modo tale da poter essere
inserito in un file inputrc.
display-shell-version (C-x C-v)
Mostra l'informazione sulla versione della corrente istanza di
bash.
Completamento programmabile
Quando viene tentato il completamento della parola per un argomento di
un comando per il quale una specifica di completamento (una compspec)
stata definita col comando incorporato complete (si veda COMANDI INCOR-
PORATI DELLA SHELL pi avanti), vengono invocati i servizi di completa-
mento programmabile.
Per prima cosa viene identificato il nome del comando. Se un comspec
stato definito per quel comando, il comspec usato per generare la lista
dei possibili completamenti per la parola. Se il nome del comando un
percorso completo di file, viene ricercato per primo un comspec per il
percorso completo. Se non viene trovato nessun comspec per il percorso
completo viene fatto un tentativo per trovare un comspec per la
porzione che segue la barra [/] finale.
Un volta trovato un comspec, questo usato per generare la lista delle
parole corrispondenti. Se non viene trovato un comspec, viene effet-
tuato il completamento di bash di default come descritto in precedenza,
sotto Completamento.
Per prima cosa, sono usate le azioni specificate dal comspec. Sono
restituite solo le corrispondenze che iniziano con la parola che
dev'essere completata. Quando viene usata l'opzione -f o -d per il
completamento del nome di file o della directory, la variabile di shell
FIGNORE
usata per filtrare le corrispondenze.
In seguito, viene generato qualsiasi completamento specificato da un
modello di espansione del nome di file all'opzione -G. Le parole gen-
erate dal modello non devono necessariamente corrispondere alla parola
che dev'essere completata. La variabile di shell GLOBIGNORE non usata
per filtrare le corrispondenze, ma viene usata la variabile FIGNORE .
In seguito, viene considerata la stringa specificata come argomento
all'opzione -W. La stringa prima suddivisa usando i caratteri nella
variabile speciale IFS come delimitatori.
rispettata la quotatura della shell. Ogni parola viene poi espansa
usando espansione delle parentesi graffe, espansione della tilde,
espansione di parametro e di variabile, sostituzione di comando ed
espansione aritmetica, come descritto in precedenza, sotto ESPANSIONE.
I risultati sono suddivisi usando le regole sopra descritte sotto Sud-
divisione in parole. I risultati dell'espansione sono confrontati con
la parte iniziale della parola che dev'essere completata, e quelli che
corrispondono diventano i possibili completamenti.
Dopo che queste corrispondenze sono state generate, viene invocata
qualsiasi funzione di shell o comando specificato con le opzioni -F e
-C. Quando il comando o funzione viene invocata, alle variabili
COMP_LINE e COMP_POINT sono assegnati valori come descritto in prece-
denza, sotto Variabili di shell. Quando una funzione di shell sta per
essere invocata, le variabili COMP_WORDS e COMP_CWORD sono pure
impostate. Quando viene invocata una funzione o comando, il primo
argomento il nome del comando i cui argomenti sono stati completati,
il secondo argomento la parola da completare e il terzo argomento la
parola che precede la parola da completare sulla riga di comando cor-
rente. Non viene effettuata nessuna azione di filtro sui completamenti
generati confrontandoli con la parola da completare; la funzione o
comando ha libert completa nel generare le corrispondenze.
Qualsiasi funzione specificata con -F viene invocata per prima. La
funzione pu usare uno qualsiasi dei servizi di shell, incluso il
comando incorporato compgen descritto pi avanti, per generare le cor-
rispondenze. la funzione deve mettere i possibili completamenti della
variabile di array COMPREPLY .
In seguito, qualsiasi comando specificato con l'opzione -C viene invo-
cato in un ambiente equivalente alla sostituzione di comando. Questo
dovrebbe stampare una lista di completamenti, uno per riga, sullo stan-
dard output. Un backslash pu essere usato per proteggere un newline,
se necessario.
Una volta generati tutti i possibili completamenti, ogni filtro speci-
ficato con l'opzione -X viene applicato alla lista. Il filtro un mod-
ello come quello usato per l'espansione di percorso; una & nel modello
sostituita col testo della parola da completare. Una & letterale si pu
indicare con un backslash di protezione; il backslash viene rimosso
prima della ricerca di una corrispondenza. Ogni completamento che cor-
risponde al modello viene rimosso dalla lista. Un ! iniziale nega il
modello; in questo caso ogni completamento non corrispondente al mod-
ello viene rimosso.
Infine, qualsiasi prefisso e suffisso specificato dalle opzioni - P e
-S aggiunto a ogni membro della lista di completamento e il risultato
restituito al codice di completamento readline come lista di completa-
menti possibili.
Se le azioni precedentemente applicate non generano corrispondenze, e a
complete era stata fornita l'opzione -o dirnames quando era stato
definito comspec, viene tentato il completamento come nome di direc-
tory.
Se a complete era stata fornita l'opzione -o plusdirs quando era stato
definito comspec, viene tentato il completamento come nomi di directory
e qualunque corrispondenza aggiunta ai risultati delle altre azioni.
Per default, se viene trovato un comspec, qualsiasi cosa generi viene
restituito al codice di completamento come insieme completo di comple-
tamenti possibili. I completamenti di bash di default non vengono
tentati, e la readline di default del completamento del nome di file
disabilitata. Se l'opzione -o bashdefault era stata fornita a complete
al momento della definizione di comspec, i completamenti di default di
bash vengono tentati se il comspec non genera corrispondenze. Se
l'opzione -o default era stata fornita a complete al momento della
definizione di comspec, i completamenti di default di readline vengono
effettuati se il comspec (e, se tentato, il completamento di default di
bash) non genera corrispondenze.
Quando un comspec indica che desiderato il completamento come nome di
directory, le funzioni di completamento programmabile forzano readline
ad aggiungere una barra [/] ai nomi completati che sono collegamenti
simbolici a directory, dipendente dal valore della variabile di read-
line mark-directories, indipendentemente dall'impostazione della vari-
abile di readline mark-symlinked-directories.
Quando l'opzione - history del comando incorporato set
abilitata, la shell fornisce l'accesso alla cronologia dei comandi, la
lista dei comandi precedentemente battuti. Il valore della variabile
HISTSIZE usata come numero di comandi da salvare nell'elenco della
cronologia. Il testo degli ultimi HISTSIZE comandi (per default 500)
viene salvato. La shell immagazzina ogni comando nella lista della
cronologia prima dell'espansione di parametro e di variabile (si veda
ESPANSIONE sopra) ma dopo che stata effettuata l'espansione della
cronologia, dipendente dai valori delle variabili di shell HISTIGNORE e
HISTCONTROL.
All'avvio, la cronologia inizializzata dal file indicato dalla vari-
abile HISTFILE (per default ~/.bash_history). Il file indicato dal
valore di HISTFILE viene troncato, se necessario, per contenere non pi
del numero di righe specificate dal valore di HISTFILESIZE . Quando
una shell interattiva esce, le ultime $HISTSIZE righe vengono copiate
dalla lista della cronologia su $HISTFILE. Se l'opzione di shell
histappend
abilitata (si veda la descrizione di shopt sotto COMANDI INCORPORATI
DELLA SHELL pi avanti), le righe vengono accodate al file della
cronologia, in caso contrario il file della cronologia viene
sovrascritto. Se HISTFILE non impostato o il file della cronologia
non scrivibile, la cronologia non viene salvata. Dopo il salvataggio
della cronologia il file della cronologia troncato per contenere non
pi di HISTFILESIZE righe. Se HISTFILESIZE non impostato, nessun tron-
camento viene effettuato.
Il comando incorporato fc (si veda COMANDI INCORPORATI DELLA SHELL pi
avanti) pu essere usato per elencare o editare e rieseguire una parte
della lista della cronologia. Il comando incorporato history pu essere
usato per mostrare o modificare la lista della cronologia e manipolare
il file di cronologia. Quando si usa l'editing della riga di comando,
sono disponibili comandi di ricerca in ciascun modo di editing che for-
nisce accesso alla lista della cronologia.
La shell permette il controllo su quali comandi salvare nella lista
della cronologia. Le variabili HISTCONTROL e HISTIGNORE possono essere
definite in modo tale che la shell salvi solo un sottoinsieme dei
comandi immessi. L'opzione di shell cmdhist , se abilitata, fa s che
la shell tenti di salvare ogni riga di un comando multiriga nello
stesso elemento della cronologia, aggiungendo dei punti e virgola dove
necessario per preservare le correttezza sintattica. L'opzione di
shell lithist chiede alla shell di salvare i comandi con i codici di
fine riga (newline) inclusi invece che separare i comandi con dei punti
e virgola. Si veda la descrizione del comando incorporato shopt pi
avanti, sotto COMANDI INCORPORATI DELLA SHELL per informazioni su come
definire e annullare le opzioni di shell.
La shell ha la capacit di espandere la cronologia in maniera simile
all'espansione della cronologia in csh. Questa sezione descrive le
possibilit di sintassi disponibili. Questa possibilit abilitata per
default per le shell interattive, e pu essere disabilitata usando
l'opzione +H del comando incorporato set (si veda COMANDI INCORPORATI
DELLA SHELL pi avanti). Le shell non interattive non effettuano
l'espansione della cronologia per default.
Le espansioni della cronologia inseriscono parole dall'elenco della
cronologia nel flusso di input, agevolando la ripetizione di comandi,
l'inserimento di argomenti di comandi precedenti nella riga di input
corrente, o la correzione rapida di errori in comandi gi immessi.
L'espansione della cronologia effettuata immediatamente dopo che una
riga completa stata letta, prima che la shell la divida in parole.
Essa ha luogo in due parti. La prima per determinare quale riga
dall'elenco della cronologia usare durante la sostituzione. La seconda
per selezionare parti di quella riga da includere nella riga corrente.
La riga selezionata dalla cronologia l'evento, e la parte di quella
riga su cui si agisce sono le parole. Diversi modificatori sono
disponibili per manipolare le parole selezionate. La riga spezzata in
parole allo stesso modo che quando letta in input, cos che pi parole
separate da metacarattericircondate da caratteri di quotatura sono con-
siderate come una sola parola. Le espansioni della cronologia iniziano
con la comparsa di un carattere di espansione della cronologia, che !
per default. Solo il backslash (\) e gli apostrofi possono quotare il
carattere di espansione della cronologia.
Diversi caratteri inibiscono l'espansione della cronologia quando
trovati immediatamente dopo il carattere di espansione della cronolo-
gia, anche se non quotato: spazio, carattere di tabulazione, newline,
carriage return e =. Se l'opzione di shell estglob abilitata, anche (
inibisce l'espansione.
Diverse opzioni di shell impostabili col comando incorporato shopt pos-
sono essere usate per influenzare il comportamento dell'espansione
della cronologia. Se l'opzione di shell histverify
abilitata (si veda la descrizione del comando incorporato shopt ), e
si sta usando readline , le sostituzioni della cronologia non vengono
passate immediatamente all'analizzatore della shell. Invece, la riga
espansa ricaricata nel buffer di editing di readline per ulteriori
modifiche. Se si sta usando readline ed abilitata l'opzione di shell
histreedit , una sostituzione di cronologia non completata con successo
viene ricaricata nel buffer di editing di readline per essere corretta.
L'opzione -p al comando incorporato history pu essere usata per vedere
cosa farebbe un'espansione della cronologia prima di usarla davvero.
L'opzione -s del comando incorporato history pu essere usata per
aggiungere comandi alla fine della lista della cronologia senza
eseguirli veramente, in modo che siano disponibili per essere richia-
mati in un secondo tempo. La shell permette il controllo dei vari
caratteri usati dal meccanismo di espansione della cronologia (si veda
la precedente descrizione di histchars sotto Variabili di shell).
Designatore di evento
Un designatore di evento un riferimento a un elemento di riga di
comando nella lista della cronologia.
! Inizia una sostituzione di cronologia, tranne quando seguita da
un blank, newline, carriage return, = o ( (quando l'opzione di
shell extglob abilitata usando il comando incorporato shopt).
!n Designa la riga di comando n.
!-n Designa la riga di comando corrente meno n.
!! Designa il comando precedente. Questo un sinonimo per `!-1'.
!stringa
Designa il comando pi recente che inizia con stringa.
!?stringa[?]
Designa il comando pi recente che contiene stringa. Il ? finale
pu essere omesso se stringa
seguita immediatamente da un codice di fine riga (newline).
^string1^string2^
Sostituzione rapida. Ripete l'ultimo comando, rimpiazzando
stringa1 con stringa2. Equivalente a
``!!:s/stringa1/stringa2/'' (si veda Modificatori pi avanti).
!# L'intera riga di comando battuta fino a questo punto.
Designatori di parola
I designatori di parola sono usati per selezionare parole dall'evento.
Un : separa la specificazione di evento dal designatore di parola.
Esso pu essere omesso se il designatore di parola inizia con un ^, $,
*, - o %. Le parole sono numerate dall'inizio della riga, la prima
parola essendo denotata da uno 0 (zero). Le parole sono inserite nella
riga corrente separate da spazi singoli.
0 (zero)
La parola numero zero. Per la shell, questa la parola che cos-
tituisce il nome del comando.
n La n-esima parola.
^ Il primo argomento. Cio, la parola 1.
$ L'ultimo argomento.
% La parola che combacia con `?stringa?' nella pi recente ricerca.
x-y Un intervallo di parole; `-y' abbrevia `0-y'.
* Tutte le parole tranne la numero zero. Questo un sinonimo per
`1-$'. Non un errore usare * se vi solo una parola
nell'evento; in quel caso il risultato una stringa vuota.
x* Abbrevia x-$.
x- Abbrevia x-$ come x*, ma omette l'ultima parola.
Se un designatore di parola fornito senza una specificazione di
evento, il comando precedente viene usato come evento.
Modificatori
Dopo l'opzionale designatore di parola, pu comparire una sequenza di
uno o pi fra i seguenti modificatori, ognuno preceduto da un `:'.
h Rimuove un componente finale in un nome di file, lasciando solo
la testa.
r Rimuove un suffisso finale della forma .xxx, lasciando il nome
base (basename).
e Rimuove tutto tranne il suffisso finale.
t Rimuove tutti i componenti di testa in un percorso, lasciando la
coda.
p Stampa il nuovo comando ma non lo esegue.
q Quota le parole sostituite, prevenendo ulteriori sostituzioni.
x Quota le parole sostituite, come con q, ma spezza in parole sui
blank e newline.
s/vecchio/nuovo/
Sostituisce nuovo alla prima occorrenza di vecchio nella riga di
evento. Qualsiasi delimitatore pu essere usato al posto di /.
Il delimitatore finale opzionale se esso l'ultimo carattere
della riga di evento. Il delimitatore pu essere quotato in vec-
chio e nuovo con un singolo backslash. Se compare & in nuovo,
esso sostituito da vecchio. Un singolo backslash quota il
carattere &. Se vecchio
nullo, viene impostato all'ultimo vecchio sostituito o, se nes-
suna sostituzione di cronologia avvenuta, l'ultima stringa in
una ricerca di !?stringa[?]
& Ripete la precedente sostituzione.
g Fa s che i cambiamenti siano applicati sull'intera riga di
evento. Questo si usa in congiunzione con `:s' (p.es.,
`:gs/vecchio/nuovo/') o `:&'. Se usato con `:s', qualsiasi
delimitatore pu essere usato al posto di /, e il delimitatore
finale opzionale se l'ultimo carattere della riga di evento.
Un a pu essere usato come sinonimo di g.
G Applica il modificatore che segue `s' una volta a ogni parola
nella riga di evento.
Se non diversamente indicato, ogni comando incorporato documentato in
questa sezione, il quale accetti opzioni precedute da - , accetta --
per indicare la fine delle opzioni. Per esempio, i comandi incorporati
:, true, false e test non accettano opzioni.
: [argomenti]
Nessun effetto; il comando non fa niente, tranne l'espansione
degli argomenti e l'effettuazione di ogni ridirezione specifi-
cata.
ritornato un codice di uscita zero.
. nomefile [argomenti]
source nomefile [argomenti]
Legge ed esegue comandi dal nomefile nell'ambiente di shell cor-
rente e ritorna lo stato d'uscita dell'ultimo comando eseguito
contenuto in nomefile. Se nomefile non contiene una barra [/],
i percorsi in PATH sono usati per trovare la directory conte-
nente nomefile. Il file cercato in PATH non ha bisogno di
essere marcato come eseguibile. Quando bash non in modalit
posix, viene ricercata la directory corrente se nessun file
viene trovato in PATH. Se l'opzione sourcepath del comando
incorporato shopt
disattivata, il PATH non viene usato per ricercare. Se sono
forniti degli argomenti, essi diventano i parametri posizionali
quando nomefile eseguito. Altrimenti i parametri posizionali
sono inalterati. Lo stato di ritorno lo stato dell'ultimo
comando terminato dentro lo script (0 se nessun comando ese-
guito), e falso se nomefile non viene trovato o non pu essere
letto.
alias [-p] [nome[=valore] ...]
Alias senza argomenti o con l'opzione -p stampa la lista degli
alias nella forma alias nome=valore sullo standard output.
Quando sono forniti argomenti, viene definito un alias per ogni
nome per cui dato il valore. Uno spazio finale a valore fa s
che la parola seguente sia controllata per la sostituzione di
alias quando l'alias espanso. Per ogni nome nella lista di
argomenti per cui nessun valore fornito, stampato il nome e il
valore dell'alias. Alias ritorna 0 [vero] a meno che non venga
dato un nome per il quale nessun alias stato definito.
bg [jobspec ...]
Riprende ogni job sospeso jobspec in background, come se fosse
stato avviato con &. Se jobspec non presente, usata quello
che la shell considera essere il job corrente. bg jobspec
ritorna 0 tranne quando viene eseguito con il job-control dis-
abilitato o, se eseguito con il job-control abilitato, se job-
spec non stato trovato o stato avviato senza usare job-con-
trol.
bind [-m keymap] [-lpsvPSV]
bind [-m keymap] [-q funzione] [-u funzione] [-r keyseq]
bind [-m keymap] -f nomefile
bind [-m keymap] -x keyseq:comando di shell
bind [-m keymap] keyseq:nome-funzione
bind comando readline
Mostra le correnti associazioni di tasti e funzioni di readline,
associa una sequenza di tasti a una funzione o macro di readline
o imposta una variabile readline . Ogni argomento che non sia
un'opzione un comando come apparirebbe in .inputrc, ma ciascuna
associazione deve essere passata come argomento separato; per
esempio, '"\C-x\C-r": re-read-init-file'. Le opzioni, se for-
nite, hanno i seguenti significati:
-m keymap
Usa keymap come mappatura della tastiera da modificare
nelle successive associazioni. I nomi accettabili per
keymap sono emacs, emacs-standard, emacs-meta,
emacs-ctlx, vi, vi-move, vi-command e vi-insert. vi
equivalente a vi-command; emacs equivalente a
emacs-standard.
-l Elenca i nomi di tutte le funzioni di readline.
-p Mostra i nomi delle funzioni di readline e delle loro
associazioni in modo tale che possano essere riletti.
-P Elenca i nomi delle funzioni di readline correnti e le
loro associazioni.
-v Mostra i nomi delle variabili di readline e i loro valori
in modo tale che possano essere riletti.
-V Elenca i nomi delle variabili di readline correnti e i
loro valori.
-s Mostra sequenze di tasti di readline associati a macro e
le stringhe risultanti in modo tale che possano essere
rilette.
-S Mostra sequenze di tasti di readline associate a macro e
le stringhe risultanti.
-f nomefile
Legge le associazioni dei tasti dal file nomefile.
-q funzione
Chiede quali tasti invocano la funzione indicata.
-u funzione
Dissocia tutti i tasti associati alla funzione indicata.
-r keyseq
Rimuove qualsiasi associazione corrente per keyseq.
-x keyseq:comando di shell
Provoca l'esecuzione di comando di shell ogni volta che
viene immesso keyseq.
Il valore di ritorno 0 tranne quando si specifica un'opzione
non riconosciuta o avvenuto un errore.
break [n]
Esce dall'interno di un ciclo for, while, until o select . Se n
specificato, interrompe n livelli. n deve essere >= 1. Se n
pi grande del numero di cicli racchiusi, tutti i cicli rac-
chiusi vengono terminati. Il valore di ritorno 0 tranne quando
la shell non sta eseguendo un ciclo quando break viene eseguito.
builtin comando-incorporato [argomenti]
Esegue il comando incorporato specificato, passandogli gli argo-
menti, e ritorna il suo stato d'uscita. Questo utile quando si
desidera definire una funzione il cui nome lo stesso di un
comando incorporato della shell, ottenendo la funzionalit del
comando incorporato attraverso la funzione. Il comando incorpo-
rato cd comunemente ridefinito in questo modo. Lo stato di
ritorno falso se comando-incorporato non un comando incorpo-
rato della shell.
cd [-L|-P] [dir]
Cambia la directory corrente con dir. La variabile HOME
il dir di default. La variabile CDPATH definisce i percorsi di
ricerca per le directory che contengano dir. Nomi di directory
alternative in CDPATH sono separate da due punti (:). Un nome
di directory nullo in CDPATH indica la directory corrente, cio,
``.''. Se dir inizia con una barra [/], allora CDPATH non
usato. L'opzione -P dice di usare la struttura di directory
fisica invece di seguire i collegamenti simbolici (si veda anche
l'opzione -P del comando incorporato set ; l'opzione -L forza a
seguire i collegamenti simbolici. Un argomento -
equivalente a $OLDPWD. Se viene usato il nome di una directory
non vuota da CDPATH o se - il primo argomento, e il cambiamento
di directory ha successo, il percorso completo della nuova
directory di lavoro viene scritto sullo standard output. Il
valore di ritorno 0 [vero] se la directory stata cambiata con
successo; falso altrimenti.
caller [expr]
Restituisce il contesto di qualsiasi chiamata di subroutine
attiva (una funzione di shell o uno script eseguito coi comandi
incorporati . o source. Senza expr, il caller mostra il numero
di riga e il nome di file di origine della chiamata di subrou-
tine corrente. Se fornito un intero non negativo come expr,
caller mostra il numero di riga, il nome di subroutine e il file
di origine corrispondente a quella posizione nello stack delle
chiamate di esecuzione. Questa informazione aggiuntiva pu
essere usata, per esempio, per stampare uno stack trace. Il
frame corrente il frame 0. Il valore di ritorno 0 tranne
quando la shell sta eseguendo una chiamata di subroutine o
quando expr non corrisponde a una posizione valida nello stack
delle chiamate.
command [-pVv] comando [arg ...]
Esegue comando con gli arg sopprimendo la normale ricerca tra le
funzione di shell. Sono eseguiti solo i comandi incorporati o
comandi trovati in PATH. Se specificata l'opzione -p, la
ricerca di comando viene effettuata usando un valore di default
per PATH usando il quale garantito che siano trovate tutte le
utilit standard. Se fornita l'opzione -V o -v, viene stampata
una descrizione di comando. L'opzione -v provoca la visualiz-
zazione di una singola parola che indica il comando o il nome di
file usato per invocare comando; l'opzione -V produce una
descrizione pi completa. Se fornita l'opzione -V o -v , lo
stato d'uscita 0 se comando
stato trovato, e 1 altrimenti. Se nessuna delle due opzioni
fornita e avviene un errore o comando non pu essere trovato, lo
stato d'uscita 127. Altrimenti, lo stato d'uscita del comando
incorporato command
lo stato d'uscita di comando.
compgen [opzione] [parola]
Genera possibili corrispondenze di completamento per parola in
accordo con le opzioni, che possono essere qualsiasi opzione
accettata dal comando incorporato complete ad eccezione di -p e
-r, e scrive le corrispondenze sullo standard output. Quando si
usano le opzioni -F o -C, le diverse variabili di shell
impostate dai servizi di completamento programmabile, anche se
disponibili, non conterranno valori utili.
Le corrispondenze saranno generate come se il codice di comple-
tamento programmabile le avesse generate direttamente da una
specifica di completamento con gli stessi flag. Se viene speci-
ficata parola, vengono mostrati solo i completamenti disponibili
per parola.
Il valore di ritorno 0 [vero], tranne quando viene fornita
un'opzione non valida, o non viene generata alcuna corrispon-
denza.
complete [-abcdefgjksuv] [-o comp-option] [-A azione] [-G globpat] [-W
wordlist] [-P prefisso] [-S suffisso]
[-X filterpat] [-F funzione] [-C comando] nome [nome ...]
complete -pr [nome ...]
Specifica come devono essere completati gli argomenti per ogni
nome. Se viene fornita l'opzione -p o se non viene fornita
alcuna opzione, le specifiche di completamento esistenti sono
stampate in modo tale da essere riutilizzabili come input.
L'opzione -r rimuove una specifica di completamento per ogni
nome o, se non fornito alcun nome, tutte le specifiche di com-
pletamento.
Il processo per applicare queste specifiche di completamento
quando si tenta il completamento della parola descritto in
precedenza, sotto Completamento programmabile.
Altre opzioni, se specificate, hanno i seguenti significati.
Gli argomenti alle opzioni -G, -W, e -X (e, se necessario alle
opzioni -P e -S) dovrebbero essere quotati per proteggerli
dall'espansione prima che venga invocato il comando incorporato
complete .
-o comp-option
L'opzione comp-option controlla diversi aspetti del com-
portamento di comspec oltre la semplice generazione di
completamenti. comp-option pu essere uno di questi:
bashdefault
Effettua il resto dei completamenti di default
di bash se comspec non genera corrispondenze.
default Usa il completamento del nome di file di default
di readline se comspec non genera corrispon-
denze.
dirnames
Effettua il completamento del nome di directory
se comspec non genera corrispondenze.
filenames
Dice a readline che il comspec genera nomi di
file, consentendo cos di effettuare qualsiasi
elaborazione di uno specifico nome di file (come
aggiungere una barra [/] ai nomi di directory o
sopprimere gli spazi finali). Fatto per essere
usato con le funzioni di shell.
nospace Dice a readline di non aggiungere uno spazio
(che viene aggiunto per default) alle parole
completate alla fine della riga.
plusdirs
Dopo che le corrispondenze definite da comspec
sono state generate, viene tentato il completa-
mento dei nomi di directory e il risultato viene
aggiunto ai risultati delle altre azioni.
-A azione
L'azione pu essere una delle seguenti per generare una
lista di possibili completamenti:
alias Nome di alias. Pu anche essere specificata come
-a.
arrayvar
Nomi di variabili di array.
binding Nomi di associazioni di tasti Readline.
builtin Nomi di comandi incorporati della shell. Pu
anche essere specificata come -b.
command Nomi di comandi. Pu anche essere specificata
come -c.
directory
Nomi di directory. Pu anche essere specificata
come -d.
disabled
Nomi di comandi incorporati della shell disabil-
itati.
enabled Nomi di comandi incorporati della shell abili-
tati.
export Nomi di variabili di shell esportate. Pu anche
essere specificata come -e.
file Nomi di file. Pu anche essere specificata come
-f.
function
Nomi di funzioni di shell.
group Nomi di gruppo. Pu anche essere specificata
come -g.
helptopic
Argomenti di aiuto come accettati dal comando
incorporato help.
hostname
Nomi di host, come presi dal file specificato
dalla variabile di shell HOSTFILE .
job Nomi di job, se il job-control attivo. Pu
anche essere specificata come -j.
keyword Parole riservate della shell. Pu anche essere
specificata come -k.
running Nomi di job in esecuzione, se il job-control
attivo.
service Nome di servizi. Pu anche essere specificata
come -s.
setopt Argomenti validi per l'opzione -o del comando
incorporato set.
shopt Nomi di opzioni di shell come accettati dal
comando incorporato shopt.
signal Nomi di segnali
stopped Nomi di job sospesi, se il job-control attivo.
user Nomi di utente. Pu anche essere specificata
come -u.
variable
Nomi di variabili di shell. Pu anche essere
specificata come -v.
-G globpat
Il modello di espansione dei nomi di file globpat viene
espanso per generare i possibili completamenti.
-W wordlist
La wordlist suddivisa usando i caratteri nella vari-
abile speciale IFS come delimitatori, e viene espansa
ogni parola risultante. I possibili completamenti sono
gli elementi della lista risultante che sono appropriati
per la parola da completare.
-C comando
comando viene eseguito in un ambiente di subshell, e il
suo output viene usato come lista di possibili completa-
menti.
-F funzione
La funzione di shell funzione viene eseguita nell'ambi-
ente di shell corrente. Quando finisce, i possibili
completamenti sono a disposizione nei valori della vari-
abile di array COMPREPLY .
-X filterpat
filterpat un modello come quelli usati per l'espansione
del nome di file. applicato all'elenco dei possibili
completamenti generati dalle opzioni e dagli argomenti
precedenti, e ogni completamento che corrisponde a fil-
terpat viene rimosso dall'elenco. Un ! iniziale in fil-
terpat nega il modello; in questo caso ogni completa-
mento che non concorda con filterpat viene rimosso.
-P prefisso
prefisso aggiunto all'inizio di ogni possibile comple-
tamento dopo che sono state applicate tutte le altre
opzioni.
-S suffisso
suffisso aggiunto alla fine di ogni possibile completa-
mento dopo che sono state applicate tutte le altre
opzioni.
Il valore di ritorno 0 [vero] tranne quando viene fornita
un'opzione non valida, viene fornita un'opzione all'infuori di
-p o - r senza un argomento nome, vien fatto un tentativo di
rimuovere una specifica di completamento per un nome per il
quale non vi sono specifiche, o se si verifica un errore aggiun-
gendo una specifica di completamento.
continue [n]
Riprende la successiva iterazione del ciclo for, while, until o
select dentro cui si trova. Se n
specificato, riprende all'n-esima nidificazione del ciclo. n
deve essere >= 1. Se n
pi grande del numero di cicli nidificati, riprende dall'ultimo
ciclo esistente (il ciclo a pi alto livello). Il valore di
ritorno 0 tranne quando la shell non si trova all'interno di un
ciclo quando continue
eseguito.
declare [-afFirtx] [-p] [nome[=valore] ...]
typeset [-afFirtx] [-p] [nome[=valore] ...]
Dichiara variabili e/o d loro degli attributi. Se il nome
omesso, mostra i valori delle variabili. L'opzione -p mostra
gli attributi e i valori di ogni nome. Quando viene usato -p ,
vengono ignorate opzioni addizionali. L'opzione -F inibisce la
visualizzazione delle definizioni di funzione; vengono stampati
solo il nome della funzione e i suoi attributi. Se l'opzione di
shell extdebug abilitata con shopt, il nome di file d'origine e
il numero di riga dov' definita la funzione vengono anch'esse
visualizzati. L'opzione -F sottintende -f Le seguenti opzioni
possono essere usate per restringere l'output alle sole vari-
abili con gli attributi specificati o per assegnare attributi di
variabili.
-a Ogni nome una variabile di array (si veda Array sopra).
-f Usa solo nomi di funzioni.
-i La variabile trattata come un intero; la valutazione
aritmetica (si veda VALUTAZIONE ARITMETICA )
effettuata quando alla variabile assegnato un valore.
-r Rende nomi accessibili in sola lettura. A questi nomi
non possono quindi essere assegnati valori da successive
istruzioni di assegnamento, e i valori assegnati non pos-
sono essere rimossi.
-t D a ogni nome l'attributo trace. Le funzioni tracciate
ereditano i segnali intercettati DEBUG e RETURN dalla
shell chiamante. L'attributo trace non ha un significato
speciale per le variabili.
-x Marca nomi per l'esportazione ai successivi comandi
attraverso l'ambiente.
Usare `+' invece di `-' disattiva l'attributo, con l'eccezione
che +a non pu essere usato per eliminare una variabile array.
Quando usato in una funzione, rende ogni nome locale, come con
il comando local . Se un nome di variabile
seguito da =valore, il valore della variabile impostato a val-
ore. Il valore di ritorno
0 tranne quando viene incontrata un'opzione non valida, vien
fatto un tentativo di definire una funzione usando ``-f
foo=bar'', vien fatto un tentativo per assegnare un valore a una
variabile in sola lettura, vien fatto un tentativo per assegnare
un valore a una variabile array senza usare la sintassi di
assegnamento composto (si veda Array sopra), uno dei nomi non
un nome valido di variabile di shell, vien fatto un tentativo
per disattivare lo stato di sola lettura per una variabile in
sola lettura, vien fatto un tentativo per disattivate lo stato
di array per una variabile array, o vien fatto un tentativo per
mostrare una funzione non esistente con -f.
dirs [-clpv] [+n] [-n]
Senza opzioni, mostra la lista delle directory correntemente
memorizzate. La visualizzazione di default su un singola riga
coi nomi di directory separate da spazi. Le directory sono
aggiunte alla lista con il comando pushd; il comando popd
rimuove elementi dalla lista.
+n Mostra l'n-esimo elemento contando dalla sinistra della
lista mostrata da dirs quando chiamato senza opzioni,
partendo da zero.
-n Mostra l'n-esimo elemento contando dalla destra della
lista mostrata da dirs quando chiamato senza opzioni,
partendo da zero.
-c Svuota lo stack delle directory cancellando tutti gli
elementi.
-l produce un elenco pi lungo; il formato di default per
l'elencazione usa un carattere tilde per indicare la home
directory.
-p Stampa lo stack delle directory con un elemento per riga.
-v Stampa lo stack delle directory con un elemento per riga,
anteponendo a ogni elemento il suo indice nello stack.
Il valore di ritorno 0 tranne quando viene fornita un'opzione
non valida o n un indice oltre la fine dello stack delle direc-
tory.
disown [-ar] [-h] [jobspec ...]
Senza opzioni, ogni jobspec viene rimosso dalla tabella dei job
attivi. Se viene data l'opzione -h, ogni jobspec non viene
rimosso dalla tabella, ma marcato in modo che SIGHUP non venga
inviato al job se la shell riceve un SIGHUP . Se non presente
alcun jobspec e non viene fornita n l'opzione -a n l'opzione -r
, viene usato il job corrente. Se non specificata alcuna job-
spec l'opzione -a richiede la rimozione o il marcamento di tutti
i job; l'opzione -r senza un argomento jobspec restringe l'oper-
azione ai job in esecuzione. Il valore di ritorno 0 tranne
quando jobspec non specifica un job valido.
echo [-neE] [arg ...]
Emette gli arg, separati da spazi, seguiti da un newline. Lo
stato di ritorno sempre 0. Se specificato -n, il newline
finale soppresso. Se data l'opzione -e, viene abilitata
l'interpretazione dei successivi caratteri preceduti dal carat-
tere di protezione backslash. L'opzione -E disabilita l'inter-
pretazione di questi caratteri di protezione, anche su sistemi
dove essi sono interpretati per default. L'opzione di shell
xpg_echo pu essere usata per determinare dinamicamente se echo
espande questi caratteri di protezione per default oppure no.
echo non interpreta -- come fine delle opzioni. echo interpreta
le seguenti sequenze di protezione:
\a allarme (segnale acustico)
\b spazio indietro (backspace)
\c sopprime il newline finale
\e un caratteri di escape
\f nuova pagina (form feed)
\n nuova riga (newline)
\r ritorno carrello (carriage return)
\t segno di tabulazione orizzontale
\v segno di tabulazione verticale
\\ backslash
\0nnn il carattere a otto bit il cui valore il valore ottale
nnn (da zero a tre cifre ottali)
\xHH il carattere a otto bit il cui valore il valore esadeci-
male HH (una o due cifre esadecimali)
enable [-adnps] [-f nomefile] [nome ...]
Abilita e disabilita i comandi incorporati della shell. Dis-
abilitare un comando incorporato permette l'esecuzione di un
comando residente su disco con lo stesso nome di un comando
incorporato della shell senza dover specificare un percorso
completo, anche se la shell normalmente cerca i comandi incorpo-
rati prima di quelli su disco. Se usato -n, ogni nome dis-
abilitato; altrimenti, nomi sono abilitati. Per esempio, per
usare il programma binario test trovato attraverso il PATH ,
invece della versione incorporata nella shell, si esegue
``enable -n test''. L'opzione -f richiede di caricare il nuovo
comando incorporato nome dall'oggetto condiviso nomefile, sui
sistemi che supportano il caricamento dinamico. L'opzione -d
elimina un comando incorporato precedentemente caricato con -f.
Se nessun argomento nome specificato, o se viene fornita
l'opzione -p viene stampata una lista di tutti i comandi incor-
porati della shell. Senza altri argomenti di opzione la lista
formata da tutti i comandi incorporati della shell abilitati.
Se fornito -n, vengono stampati solo i comandi incorporati dis-
abilitati. Se fornito -a, la lista stampata include tutti i
comandi incorporati, con l'indicazione per ciascuno se abili-
tato o no. Se viene fornito -s, l'output ristretto ai comandi
incorporati speciali POSIX. Il valore di ritorno 0 tranne
quando nome non un comando incorporato della shell o si veri-
fica un errore nel caricamento di un nuovo comando incorporato
da un oggetto condiviso.
eval [arg ...]
Gli arg sono letti e concatenati insieme formando un singolo
comando. Questo comando quindi letto ed eseguito dalla shell,
e il suo stato di uscita ritornato come valore del comando
eval. Se non vi alcun arg, o vi sono solo argomenti nulli,
eval ritorna 0.
exec [-cl] [-a nome] [comando [argomenti]]
Se comando
specificato, esso sostituisce la shell. Nessun nuovo processo
viene creato. Gli argomenti diventano gli argomenti per
comando. Se viene fornita l'opzione -l la shell pone un trat-
tino all'inizio dell'arg numero zero passato a comando. Questo
quello che fa login(1). L'opzione -c provoca l'esecuzione di
comando con un ambiente vuoto. Se viene fornita -a la shell
passa nome come argomento numero zero del comando eseguito. Se
comando non pu essere eseguito per qualche ragione, una shell
non interattiva termina, a meno che non sia abilitata l'opzione
di shell execfail , nel qual caso restituisce insuccesso. Una
shell interattiva restituisce insuccesso se il file non pu
essere eseguito. Se comando non specificato, qualsiasi ridi-
rezione ha effetto nella shell corrente, e lo stato di ritorno
0. Se si verifica un errore di ridirezione lo stato di ritorno
1.
exit [n]
Causa l'uscita della shell con uno stato d'uscita n. Se n
omesso, lo stato d'uscita
quello dell'ultimo comando eseguito. Un'intercettazione di
segnale su EXIT
eseguita prima che la shell termini.
export [-nf] [nome[=parola]] ...
export -p
I nomi forniti sono marcati per l'esportazione automatica
nell'ambiente dei comandi eseguiti in seguito. Se specificata
l' opzione -f , i nomi si riferiscono a funzioni. Se il nome
omesso o se se fornita l'opzione -p , viene stampata una lista
di tutti i nomi che sono esportati in questa shell. L'opzione
-n provoca la rimozione della propriet di esportazione da ogni
nome. Se un nome di variabile seguito da =parola, il valore
della variabile impostato a parola. export ritorna una stato
d'uscita di 0 tranne quando viene trovata un'opzione non valida,
uno dei nomi non un nome valido di variabile di shell, o viene
fornita l'opzione -f con un nome che non il nome di una fun-
zione.
fc [-e nome-editor] [-nlr] [primo] [ultimo]
fc -s [pat=rep] [cmd]
Corregge un comando. Nella prima forma, un intervallo di
comandi fra primo e ultimo viene selezionato dalla lista della
cronologia. Primo e ultimo possono essere specificati come una
stringa (per individuare l'ultimo comando che inizia con quella
stringa) o come numero (un indice nella lista della cronologia,
dove un numero negativo usato a partire dal numero del comando
corrente). Se ultimo non specificato impostato al comando
corrente per l'elencazione (cos che ``fc -l -10'' stampa gli
ultimi 10 comandi) e a primo altrimenti. Se primo non specifi-
cato impostato al precedente comando per l'editing e a -16 per
l'elencazione.
L'opzione -n sopprime i numeri dei comandi quando li elenca.
L'opzione -r inverte l'ordine dei comandi. Se specificata
l'opzione -l, i comandi sono elencati sullo standard output.
Altrimenti, invocato l'editor indicato da ename su un file che
contiene questi comandi. Se ename
omesso, usato il valore della variabile FCEDIT, e il valore di
EDITOR se FCEDIT non impostata. Se n l'una n l'altra variabile
impostata,
usato vi Quando l'editing completato, i comandi editati sono
listati ed eseguiti.
Nella seconda forma, comando rieseguito dopo che ogni istanza
di pat sostituita da rep. Un utile alias da usare con questo
``r="fc -s"'', cos che digitando ``r cc'' si esegue l'ultimo
comando che inizia con ``cc'' e battendo ``r'' si riesegue
l'ultimo comando.
Se usata la prima forma, il valore di ritorno 0 a meno che sia
incontrata un'opzione non valida o primo o ultimo specifichino
righe di cronologia fuori dall'intervallo esistente. Se for-
nita l'opzione -e, il valore di ritorno il valore dell'ultimo
comando eseguito, o insuccesso se avviene un errore con il file
temporaneo dei comandi. Se usata la seconda forma, lo stato di
ritorno
quello del comando rieseguito, tranne quando cmd non specifica
una riga di cronologia valida, nel qual caso fc ritorna insuc-
cesso.
fg [jobspec]
Riprende jobspec in primo piano, e lo rende il job corrente. Se
jobspec non presente, usata la nozione della shell di job cor-
rente. Il valore di ritorno quello del comando posto in primo
piano, o insuccesso se eseguito mentre il job-control disabili-
tato o, quando eseguito col job-control abilitato, se jobspec
non specifica un job valido o jobspec specifica un job che era
stato avviato senza job-control.
getopts optstring nome [args]
getopts
usato dalle procedure di shell per analizzare i parametri
posizionali. optstring contiene i caratteri delle opzioni che
devono essere riconosciuti; se un carattere seguito da due
punti, l'opzione si aspetta di avere un argomento, che dovr
essere separato dalla stessa da spazi bianchi. I due punti e il
punto interrogativo non possono essere usati come caratteri di
opzione. Ogni volta che invocato, getopts pone la successiva
opzione nella variabile di shell nome, inizializzando nome se
non esiste, e l'indice del prossimo argomento da elaborare nella
variabile OPTIND. OPTIND
inizializzato a 1 ogni volta che la shell o uno script di shell
viene invocato. Quando un'opzione richiede un argomento,
getopts pone quell'argomento nella variabile OPTARG. La shell
non reimposta OPTIND automaticamente; questa variabile deve
essere manualmente reimpostata tra pi chiamate a getopts dentro
la stessa esecuzione della shell, se deve essere usato un nuovo
insieme di parametri.
Quando viene raggiunta la fine delle opzioni getopts esce con un
valore di ritorno maggiore di zero. OPTIND impostato
all'indice del primo argomento senza opzioni e nome viene
impostato a ?.
getopts normalmente analizza i parametri posizionali, ma se pi
argomenti vengono dati in args, getopts analizza solo quelli.
getopts pu informare degli errori in due modi. Se il primo
carattere di optstring
un due punti, usata un'informazione di errore silenziosa .
Normalmente i messaggi diagnostici vengono stampati quando ven-
gono trovate opzioni non valide o mancano argomenti alle
opzioni. Se la variabile OPTERR
impostata a 0, nessun messaggio di errore viene mostrato, anche
se il primo carattere di optstring non due punti.
Se incontrata un'opzione non valida, getopts pone ? nel nome e,
se non silenziosa, stampa un messaggio di errore e annulla
OPTARG. Se getopts
silenziosa, il carattere di opzione trovato posto in OPTARG e
nessun messaggio diagnostico stampato.
Se un argomento richiesto non trovato, e getopts non silen-
ziosa, un punto interrogativo (?) posto in nome, OPTARG viene
annullato, e viene stampato un messaggio diagnostico. Se
getopts
silenziosa, allora un carattere di due punti (:) posto in nome
e OPTARG
impostato al carattere di opzione trovato.
getopts ritorna 0 [vero] se viene trovata un'opzione, specifi-
cata o non specificata. Ritorna falso se viene incontrata la
fine delle opzioni o avviene un errore.
hash [-lr] [-p nomefile] [-dt] [nome]
Per ciascun nome, il percorso completo del comando determinato
ricercando le directory in $PATH e viene memorizzato. Se viene
fornita l'opzione -p , non viene effettuata nessuna ricerca di
percorso e nomefile
usato come nome completo del comando. L'opzione -r fa s che la
shell dimentichi tutte le i percorsi memorizzati. L'opzione -d
fa s che la shell dimentichi i percorsi memorizzati di ogni
nome. Se viene fornita l'opzione -t
stampato il percorso completo al quale corrisponde ogni nome.
Se vengono forniti argomenti multipli di nome con -t, il nome
viene stampato prima del percorso completo indicizzato.
L'opzione -l provoca la visualizzazione dell'output in un for-
mato riutilizzabile come input. Se nessun argomento dato, ed
fornito solo -l, stampata l'informazione circa i comandi memo-
rizzati. Lo stato di ritorno 0 [vero] tranne quando nome
irreperibile o viene fornita un'opzione non valida.
help [-s] [modello]
Mostra utili informazioni sui i comandi incorporati. Se modello
specificato, help fornisce un aiuto dettagliato su tutti i
comandi che corrispondono al modello; altrimenti stampato
l'aiuto per tutti i comandi incorporati e le strutture di con-
trollo della shell. L'opzione -s restringe le informazioni
visualizzate a una breve sintassi d'uso. Lo stato di ritorno 0
tranne quando nessun comando individuato dal modello.
history [n]
history -c
history -d offset
history -anrw [nomefile]
history -p arg [arg ...]
history -s arg [arg ...]
Senza opzioni, mostra la lista della cronologia dei comandi con
i numeri di riga. Le righe elencate con un * sono state modifi-
cate. Con l'argomento n elenca solo le ultime n righe. Se la
variabile di shell HISTTIMEFORMAT impostata e non nulla,
usata come stringa di formato di strftime(3) per mostrare la
data/ora associata a ogni elemento della cronologia. Nessuno
spazio interposto fra la data/ora formattata e la riga della
cronologia. Se fornito nomefile, questo usato come nome del
file di cronologia; altrimenti, usato il valore di HISTFILE.
Le opzioni, se fornite, hanno i seguenti significati:
-c Svuota l'elenco della cronologia eliminando tutti gli
elementi.
-d offset
Cancella l'elemento della cronologia alla posizione off-
set.
-a Accoda le ``nuove'' righe della cronologia (righe della
cronologia inserite dall'inizio della corrente sessione
di bash) al file di cronologia.
-n Inserisce le righe della cronologia non ancora lette dal
file di cronologia nella corrente lista della cronologia.
Queste sono le righe accodate al file di cronologia
dall'inizio della corrente sessione di bash.
-r Legge il contenuto del file di cronologia e lo usa come
cronologia corrente.
-w scrive la cronologia corrente sul file di cronologia,
sovrascrivendo il contenuto del file di cronologia.
-p Effettua la sostituzione della cronologia sui seguenti
arg e mostra il risultato sullo standard output. Non
conserva il risultato nell'elenco della cronologia. Ogni
arg dev'essere quotato per disabilitare la normale espan-
sione della cronologia.
-s Memorizza gli arg nell'elenco della cronologia come un
singolo comando. L'ultimo comando nell'elenco della
cronologia viene rimosso prima che gli arg vengano
aggiunti.
Se HISTTIMEFORMAT impostata, l'informazione data/ora associata
a ogni elemento di cronologia viene scritta nel file di cronolo-
gia. Il valore di ritorno 0 tranne quando viene incontrata
un'opzione non valida, avviene un errore mentre si legge o si
scrive il file di cronologia, viene fornito un offset non valido
come argomento a -d o l'espansione della cronologia fornita come
argomento a -p non ha successo.
jobs [-lnprs] [ jobspec ... ]
jobs -x comando [ args ... ]
La prima forma elenca i job attivi. Le opzioni hanno i seguenti
significati:
-l Elenca gli ID dei processi in aggiunta alle normali
informazioni.
-p Elenca solo l'ID di processo del principale job del
gruppo di processo.
-n Mostra le informazioni solo sui job che hanno cambiato
stato dall'ultima notifica di stato mostrata all'utente.
-r Restringe l'output ai job in esecuzione.
-s Restringe l'output ai job sospesi.
Se jobspec
specificato, l'output limitato alle informazioni su quel job.
Lo stato di ritorno 0 a meno che venga incontrata un'opzione
non valida o sia fornito un jobspec non valido.
Se fornita l'opzione -x, jobs sostituisce qualsiasi jobspec
trovato in comando o args con il corrispondente ID del gruppo di
processo, ed esegue comando passandogli args, e ritornando il
suo stato d'uscita.
kill [-s sigspec | -n signum | -sigspec] [pid | jobspec] ...
kill -l [sigspec | stato d'uscita]
Manda il segnale indicato da sigspec o signum al processo indi-
cato da pid o jobspec. sigspec
o un nome di segnale, senza distinzione tra maiuscole e minus-
cole, come SIGKILL, (con o senza il prefisso SIG ) o un numero
di segnale; signum
un numero di segnale. Se sigspec non presente, si suppone
essere SIGTERM. Un argomento -l elenca i nomi dei segnali. Se
sono forniti degli argomenti quando specificata l'opzione -l,
sono elencati i nomi dei segnali corrispondenti agli argomenti,
e lo stato di ritorno 0. L'argomento stato d'uscita di -l
un numero che specifica o un numero di segnale o lo stato
d'uscita di un processo terminato da un segnale. kill restitu-
isce 0 [vero] se almeno un segnale stato inviato con successo,
o falso se avviene un errore o se incontrata un'opzione non
valida.
let arg [arg ...]
Ogni arg
un'espressione aritmetica che deve essere valutata (si veda
VALUTAZIONE ARITMETICA). Se l'ultimo arg viene valutato 0, let
ritorna 1; altrimenti ritornato 0.
local [opzione] [nome[=valore] ...]
Per ogni argomento viene creata una variabile locale chiamata
nome e le viene assegnato valore. L'opzione pu essere una
qualunque delle opzioni accettate da declare. Quando local
usato dentro una funzione, fa s che la variabile nome abbia una
visibilit ristretta a quella funzione e ai suoi figli. Senza
alcun operando, local scrive una lista di variabili locali sullo
standard output.
un errore usare local quando non si dentro una funzione. Lo
stato di ritorno 0 tranne quando local
usata fuori da una funzione, viene fornito un nome non valido o
nome una variabile in sola lettura.
logout Termina una shell di login.
popd [-n] [+n] [-n]
Rimuove degli elementi dallo stack delle directory. Senza argo-
menti, rimuove la directory in cima allo stack, ed effettua un
cd verso la nuova directory in cima allo stack. Gli argomenti,
se forniti, hanno il seguente significato:
+n Rimuove l'n-esimo elemento contando dalla sinistra della
lista mostrata da dirs, partendo da zero. Per esempio:
``popd +0'' rimuove la prima directory, ``popd +1'' la
seconda.
-n Rimuove l'n-esimo elemento contando dalla destra della
lista mostrata da dirs, partendo da zero. Per esempio:
``popd -0'' Rimuove l'ultima directory, ``popd -1'' la
penultima.
-n Sopprime il normale cambiamento di directory quando
rimuove directory dallo stack, ossia viene manipolato
solo lo stack.
Se il comando popd ha successo, viene anche effettuato un dirs,
e lo stato di ritorno 0. popd ritorna falso se viene incon-
trata un'opzione non valida, lo stack delle directory vuoto,
specificato un elemento non esistente nello stack delle direc-
tory, o il cambio di directory non ha successo.
printf [-v var] formato [argomenti]
Scrive gli argomenti formattati sullo standard output sotto il
controllo del formato. Il formato
una stringa di caratteri che contiene tre tipi di oggetti:
caratteri semplici, i quali sono semplicemente copiati sullo
standard output, sequenze di protezione dei caratteri, che sono
convertite e copiate sullo standard output, e specifiche di for-
mato, ognuna delle quali provoca la stampa dell'argomento
seguente. In aggiunta ai formati printf(1) standard, %b fa s
che printf espanda le sequenze di protezione backslash
nell'argomento corrispondente (con l'eccezione che \c fa ter-
minare l'output, i backslash in \', \" e \? non sono rimossi e
gli escape ottali che iniziano con \0 possono contenere fino a
quattro cifre), e %q fa s che printf stampi sull'output l'argo-
mento corrispondente in un formato riutilizzabile come input di
shell.
L'opzione -v fa s che l'output sia assegnato alla variabile var
invece di essere stampato sullo standard output.
Il formato riutilizzato pi volte fino all'esaurimento degli
argomenti. Se il formato richiede pi argomenti di quelli for-
niti, le specifiche di formato extra si comportano come se fosse
stato fornito, a seconda del caso, il valore zero o una stringa
nulla. Il valore di ritorno 0 in caso di successo, diverso da
zero in caso di insuccesso.
pushd [-n] [dir]
pushd [-n] [+n] [-n]
Aggiunge una directory in cima allo stack delle directory, o
ruota lo stack, rendendo la nuova cima dello stack la corrente
directory di lavoro. Senza argomenti, scambia le due directory
in cima e ritorna 0, a meno che lo stack delle directory non sia
vuoto. Gli argomenti, se forniti, hanno il seguente signifi-
cato:
+n Ruota lo stack cos che la n-esima directory (contando
dalla sinistra della lista mostrata da dirs, partendo da
zero) vada in cima.
-n Ruota lo stack cos che la n-esima directory (contando da
destra della lista mostrata da dirs, partendo da zero)
vada in cima.
-n Sopprime il normale cambio di directory quando si aggiun-
gono directory allo stack, ossia viene manipolato solo lo
stack.
dir Aggiunge dir in cima allo stack delle directory, renden-
dola la nuova directory di lavoro corrente.
Se il comando pushd ha successo, viene anche effettuato un dirs
. Se usata la prima forma, pushd ritorna 0 a meno che il cd
verso dir non abbia successo. Con la seconda forma, pushd
ritorna 0 tranne quando lo stack delle directory vuoto,
specificato un elemento non esistente nello stack delle direc-
tory, o il cambiamento di directory verso la nuova directory
corrente specificata non ha successo.
pwd [-LP]
Stampa il percorso assoluto della corrente directory di lavoro.
Il percorso stampato non contiene alcun collegamento simbolico
se fornita l'opzione -P o l'opzione -o physical al comando
incorporato set
abilitata. Se viene usata l'opzione -L il percorso stampato pu
contenere collegamenti simbolici. Lo stato di ritorno 0 tranne
quando avviene un errore mentre si legge il percorso della
directory corrente o viene fornita un'opzione non valida.
read [-ers] [-u fd] [-t timeout] [-a aname] [-p prompt] [-n nchars] [-d
delim] [nome ...]
Viene letta una riga dallo standard input, o dal descrittore di
file fd fornito come argomento dell'opzione -u, e la prima
parola assegnata al primo nome, la seconda parola al secondo
nome, e cos via, e le parole rimaste, compresi i separatori,
sono assegnate all'ultimo nome. Se ci sono meno parole lette
dalla riga di input che nomi, ai nomi rimanenti vengono asseg-
nati valori nulli. I caratteri in IFS sono usati per suddi-
videre la riga in parole. Il carattere backslash \ pu essere
usato per rimuovere qualsiasi significato speciale dal succes-
sivo carattere letto e per la continuazione di riga. Le
opzioni, se fornite, hanno il seguente significato:
-a aname
Le parole sono assegnate a indici sequenziali della vari-
abile array aname, partendo da 0. aname viene annullata
prima dell'assegnamento dei nuovi valori. Altri argo-
menti nome vengono ignorati.
-d delim
Il primo carattere di delim usato per far terminare la
riga di input, invece di newline.
-e Se lo standard input viene da un terminale, readline (si
veda READLINE sopra) usato per ottenere la riga.
-n nchars
read considerata completata dopo aver letto inchars,
invece di aspettare una riga di input completa.
-p prompt
Visualizza prompt sullo standard error, senza un newline
finale, prima di tentare di leggere qualsiasi input. Il
prompt mostrato solo se l'input proviene da un termi-
nale.
-r Backslash non fa da carattere di protezione. Il back-
slash considerato come parte della riga. In partico-
lare, una coppia backslash-newline non pu essere usata
come una continuazione di riga.
-s Modalit silenziosa. Se l'input viene da un terminale i
caratteri immessi non vengono visualizzati sul terminale.
-t timeout
Fa s che read vada fuori tempo massimo e ritorni insuc-
cesso se un riga completa di input non viene letta entro
timeout secondi. Quest'opzione non produce effetti se
read non sta leggendo l'input da un terminale o da una
pipe.
-u fd Legge l'input dal descrittore di file fd.
Se non sono forniti nomi la riga viene assegnata alla variabile
REPLY. Lo stato d'uscita 0, tranne quando viene raggiunta la
fine del file, read esaurisce il tempo limite consentito o viene
fornito un descrittore di file non valido come argomento a -u.
readonly [-apf] [nome[=parola] ...]
I nomi dati sono da considerare in sola lettura; i valori di
questi nomi non possono essere cambiati dagli assegnamenti suc-
cessivi. Se fornita l'opzione -f, sono cos marcate le funzioni
corrispondenti ai nomi. L'opzione -a restringe le variabili
agli array. Se nessun argomento nome
dato, o se fornita l'opzione -p, viene stampata una lista di
tutti i nomi in sola lettura. L'opzione -p provoca la visualiz-
zazione dell'output in un formato riutilizzabile come input. Se
un nome di variabile seguito da =parola il valore della vari-
abile impostato a parola. Lo stato di ritorno 0 tranne quando
incontrata un'opzione non valida, uno dei nomi non un nome di
variabile di shell valido, o viene fornita l'opzione -f con un
nome che non una funzione.
return [n]
Fa s che una funzione esca con il valore di ritorno specificato
da n. Se n
omesso, lo stato di ritorno quello dell'ultimo comando ese-
guito nel corpo della funzione. Se usato fuori da una funzione,
ma durante l'esecuzione di un script tramite il comando .
(source), fa s che la shell smetta di eseguire quello script e
ritorni o n o lo stato d'uscita dell'ultimo comando eseguito
dentro lo script come stato d'uscita dello script. Se usato
fuori da una funzione e non durante l'esecuzione di uno script
per mezzo di ., lo stato di ritorno falso. Qualsiasi comando
associato alla gestione del segnale RETURN viene eseguito prima
che l'esecuzione riprenda dopo la funzione o script.
set [--abefhkmnptuvxBCHP] [-o option] [arg ...]
Senza opzioni, il nome e il valore di ogni variabile di shell
vengono visualizzati in un formato riutilizzabile come input per
impostare o reimpostare le variabili attualmente impostate. Le
variabili in sola lettura non possono essere reimpostate. In
modalit posix sono elencate solo le variabili di shell. L'out-
put ordinato in base alla localizzazione corrente. Quando sono
specificate opzioni, queste impostano o annullano attributi di
shell. Gli argomenti che rimangono dopo che le opzioni sono
state elaborate sono trattati come valori per i parametri
posizionali e vengono assegnati, nell'ordine, a $1, $2, ... $n.
Le opzioni, se specificate, hanno i seguenti significati:
-a Automaticamente marca le variabili e le funzioni che
sono modificate o create, come da esportare verso
l'ambiente dei comandi successivi.
-b Riporta immediatamente lo stato dei job in background
terminati, invece che prima di stampare il prossimo
prompt primario. Questo applicabile solo quando abil-
itato il job-control.
-e Esce immediatamente se un comando semplice (si veda
GRAMMATICA DELLA SHELL sopra) termina con uno stato
diverso da zero. La shell non esce se il comando che
non ha successo fa parte di un elenco di comandi che
segue subito dopo una parola chiave while o until , se
fa parte di un controllo in un'istruzione if , se fa
parte di una lista && o || , o se il valore di ritorno
del comando stato negato per mezzo di !. Un comando
sul segnale intercettato ERR, se impostato, eseguito
prima dell'uscita della shell.
-f Disabilita l'espansione di percorso.
-h Ricorda la posizione dei comandi man mano che sono
ritrovati per l'esecuzione. Questa abilitata per
default.
-k Tutti gli argomenti nella forma di istruzioni di asseg-
namento sono posti nell'ambiente per un comando, non
solo quelli che precedono il nome del comando stesso.
-m Modo monitor. Il job-control abilitato. Quest'opzione
attiva per default per le shell interattive, su sistemi
che lo supportano (si veda JOB-CONTROL sopra). I pro-
cessi in background girano in un gruppo di processo sep-
arato e una riga che contiene il loro stato d'uscita
viene stampata al termine della loro esecuzione.
-n Legge i comandi ma non li esegue. Questo pu essere
usato per controllare uno script di shell per errori di
sintassi. Questo viene ignorato se la shell interat-
tiva.
-o nome-opzione
Il nome-opzione pu essere uno dei seguenti:
allexport
Lo stesso di -a.
braceexpand
Lo stesso di -B
emacs Usa una interfaccia di editing della riga di
comando in stile emacs. Questo abilitato per
default quando la shell interattiva, a meno che
la shell non sia avviata con l'opzione --noedit-
ing.
errtrace
Lo stesso di -E.
functrace
Lo stesso di -T.
errexit Lo stesso di -e.
hashall Lo stesso di -h.
histexpand
Lo stesso di -H.
history Abilita la cronologia dei comandi, come
descritto in precedenza, sotto CRONOLOGIA.
Questa opzione attiva per default nelle shell
interattive.
ignoreeof
L'effetto lo stesso come se fosse stato ese-
guito il comando di shell ``IGNOREEOF=10'' (si
veda Variabili di shell sopra).
keyword Lo stesso di -k.
monitor Lo stesso di -m.
noclobber
Lo stesso di -C.
noexec Lo stesso di -n.
noglob Lo stesso di -f. nolog Attualmente ignorato.
notify Lo stesso di -b.
nounset Lo stesso di -u.
onecmd Lo stesso di -t.
physical
Lo stesso di -P.
pipefail
Se impostato, il valore di ritorno di una
pipeline il valore dell'ultimo comando (quello
pi a destra) che esce con uno stato d'uscita
diverso da zero, o zero se tutti i comandi nella
pipeline escono con successo. Questa opzione
disabilitata per default.
posix Cambia il comportamento di bash quando il com-
portamento di default differisce da quello stan-
dard POSIX per farlo concordare con la (modalit
posix standard.
privileged
Lo stesso di -p.
verbose Lo stesso di -v.
vi Usa un'interfaccia di editing della riga di
comando in stile vi.
xtrace Lo stesso di -x.
Se -o
fornito con nessun nome-opzione, sono stampati i valori
delle opzioni correnti. Se +o
fornito con nessun nome-opzione, una serie di comandi
set per ricreare le impostazioni dell'opzione corrente
viene visualizzata sullo standard output.
-p Attiva il modo privilegiato. In questo modo, i file
$ENV e $BASH_ENV non vengono elaborati, le funzioni di
shell non sono ereditate dall'ambiente e la variabile
SHELLOPTS , se appare in un ambiente, viene ignorata.
Se la shell avviata con l'id (gruppo) effettivo
dell'utente non uguale all'id (gruppo) reale
dell'utente, e non viene fornita l'opzione -p, queste
azioni vengono eseguite e l'id effettivo dell'utente
impostato all'id reale dell'utente. Se viene fornita
l'opzione -p all'avvio, l'id effettivo dell'utente non
reimpostato. Disattivare questa opzione fa s che gli id
effettivi dell'utente e del gruppo siano impostati agli
id reali dell'utente e del gruppo.
-t Esce dopo aver letto ed eseguito un comando.
-u Considera errore le variabili non impostate quando
effettua l'espansione di parametro. Se l'espansione
tentata su una variabile non impostata, la shell stampa
un messaggio di errore e, se non interattiva, esce con
uno stato diverso da zero.
-v Stampa le righe in input alla shell appena sono lette.
-x Dopo l'espansione di ogni comando semplice, comando for,
comando case, comando select o comando for aritmetico,
mostra il valore espanso di PS4, seguito dal comando e
dai suoi argomenti espansi o dall'elenco di parole asso-
ciate.
-B La shell effettua l'espansione delle parentesi graffe
(si veda Espansione delle parentesi graffe sopra).
Questo attivo per default.
-C Se impostato, bash non sovrascrive un file esistente con
gli operatori di ridirezione >, >& e <> . Una
sovrascrittura pu ancora essere ottenuta creando i file
di output usando l'operatore di ridirezione >| al posto
di >.
-E Se impostato, ogni segnale intercettato ERR ereditato
dalle funzioni di shell, sostituzioni di comando e
comandi eseguiti in un ambiente di subshell. Il segnale
intercettato ERR non viene normalmente ereditato in
questi casi.
-H Abilita la sostituzione della cronologia in stile ! .
Quest'opzione attiva per default quando la shell
interattiva.
-P Se impostato, non segue i collegamenti simbolici quando
esegue comandi come cd che cambiano la directory di
lavoro corrente. invece usata la struttura di directory
fisica. Per default, bash segue la successione logica
delle directory quando si eseguono comandi che cambiano
la directory corrente.
-T Se impostata, i comandi sui segnali intercettati DEBUG e
RETURN sono ereditati dalle funzioni di shell, dalle
sostituzioni di comando e dai comandi eseguiti in un
ambiente di subshell. I segnali intercettati DEBUG e
RETURN normalmente non vengono ereditati in questi casi.
-- Se nessun argomento segue questa opzione, allora i
parametri posizionali sono assenti. Altrimenti, i
parametri posizionali sono impostati agli arg, anche se
alcuni di loro iniziano con un -.
- Segnala la fine delle opzioni, e fa s che tutti i rima-
nenti arg siano assegnati ai parametri posizionali. Le
opzioni -x e -v sono disattivate. Se non vi alcun arg,
i parametri posizionali rimangono inalterati.
Le opzioni sono disattivate per default se non specificato
diversamente. Usare + piuttosto che - causa la disattivazione
di queste opzioni. Le opzioni possono anche essere specificate
come argomenti a un'invocazione della shell. Il corrente
insieme di opzioni pu essere trovato in $-. Lo stato di ritorno
sempre 0 [vero] a meno che non si incontri un'opzione non val-
ida.
shift [n]
I parametri posizionali da n+1 ... sono rinominati $1 .... I
parametri rappresentati dai numeri $# fino a $#-n+1 non sono
impostati. n dev'essere un numero non negativo minore o uguale
a $#. Se n
0, nessun parametro viene cambiato. Se n
omesso, considerato valere 1. Se n
pi grande di $#, i parametri posizionali non sono cambiati. Lo
stato di ritorno pi grande di 0 se n
pi grande di $# o minore di 0; altrimenti 0.
shopt [-pqsu] [-o] [optname ...]
Attiva/disattiva i valori di variabili che controllano il com-
portamento opzionale della shell. Senza opzioni, o con
l'opzione -p , viene mostrata una lista di tutte le opzioni
impostabili, con una indicazione se ognuna impostata o no.
L'opzione -p fa s che l'output sia mostrato in una forma che pu
essere riutilizzata come input. Altre opzioni hanno il seguente
significato:
-s Abilita (attiva) ogni optname.
-u Disabilita (disattiva) ogni optname.
-q Sopprime il normale output (modalit silenziosa); lo stato
di ritorno indica se il optname attivato o non attivato.
Se sono dati argomenti optname multipli con -q, lo stato
di ritorno 0 se tutti gli optname sono attivati; diverso
da zero altrimenti.
-o Restringe i valori di optname a quelli definiti per
l'opzione -o del comando incorporato set .
Se una delle opzioni -s o -u viene usata senza argomenti opt-
name, la visualizzazione limitata a quelle opzioni che sono,
rispettivamente, attivate o non attivate. Se non diversamente
indicato le opzioni shopt sono disabilitate (non attivate) per
default.
Lo stato di ritorno quando vengono elencate delle opzioni 0 se
tutti gli optname sono abilitati, altrimenti diverso da zero.
Quando si impostano o si rimuovono opzioni, lo stato di ritorno
0 tranne quando optname non una valida opzione di shell.
L'elenco delle opzioni di shopt :
cdable_vars
Se impostata, un argomento al comando incorporato cd che
non sia una directory considerato come il nome di una
variabile il cui valore la directory verso cui cam-
biare.
cdspell Se impostata, vengono corretti errori minori
nell'ortografia di un componente di directory in un
comando cd . Gli errori ricercati sono caratteri inver-
titi, mancanza di un carattere e un carattere in pi. Se
viene trovata una correzione il nome di file corretto
viene stampato e il comando prosegue. Quest'opzione
usata solo dalle shell interattive.
checkhash
Se impostata, bash controlla che un comando trovato in
una tabella hash esista prima di tentarne l'esecuzione.
Se un comando la cui posizione disponibile in un ele-
mento della tabella hash non esiste pi, viene effettuata
una normale ricerca di percorso.
checkwinsize
Se impostata, bash controlla la dimensione della fines-
tra dopo ogni comando e, se necessario, aggiorna i val-
ori di LINES e COLUMNS
cmdhist Se impostata, bash tenta di salvare tutte le righe di un
comando a riga multipla nello stesso elemento di
cronologia. Questo facilita la ripetizione di comandi
multiriga.
dotglob Se impostata, bash include i nomi di file che iniziano
con un `.' nel risultato dell'espansione del percorso.
execfail
Se impostata, una shell non interattiva non esce se non
pu eseguire il file specificato come argomento al
comando incorporato exec . Una shell interattiva non
esce se exec non ha successo.
expand_aliases
Se impostata, gli alias vengono espansi come descritto
in precedenza, sotto ALIASES. Questa opzione abilitata
per default per le shell interattive.
extdebug
Se impostata, il comportamento previsto per poter usare
dei debugger abilitato:
1. L'opzione -F al comando incorporato declare
mostra il nome di file di origine e il numero di
riga corrispondente a ogni nome di funzione for-
nita come argomento.
2. Se il comando eseguito nella gestione del segnale
DEBUG ritorna un valore diverso da zero, il
comando successivo viene saltato e non eseguito.
3. Se il comando eseguito nella gestione del segnale
DEBUG ritorna il valore 2, e la shell in ese-
cuzione in una subroutine (una funzione di shell
o uno script di shell eseguito dai comandi incor-
porati . o source), viene simulata una chiamata
a return.
4. BASH_ARGC e BASH_ARGV sono aggiornati come
descritto nelle loro descrizioni viste sopra.
5. Il tracciamento delle funzioni abilitato: sosti-
tuzione di comando, funzioni di shell, e subshell
invocate con ( comando ) ereditano le inter-
cettazione di segnale DEBUG e RETURN.
6. Il tracciamento degli errori abilitato: sosti-
tuzione di comando, funzioni di shell, e subshell
invocate con ( comando ) ereditano le inter-
cettazione di segnale ERROR.
extglob Se impostata, le caratteristiche di corrispondenza
estesa di modelli descritte in precedenza, sotto
Espansione di percorso sono abilitate.
extquote
Se impostato, la quotatura $'stringa' e $"stringa"
effettuata all'interno delle espansioni di ${parametro}
racchiuse tra virgolette. Quest'opzione abilitata per
default.
failglob
Se impostata, i modelli che non generano nomi validi di
file durante l'espansione del percorso danno come risul-
tato un errore di espansione.
force_fignore
Se impostata, i suffissi specificati dalla variabile di
shell FIGNORE fanno si che delle parole vengano ignorate
quando viene effettuato il completamento delle parole
anche se le parole ignorate sono i soli possibili com-
pletamenti. Si veda VARIABILI DI SHELL sopra per una
descrizione di FIGNORE. Quest'opzione abilitata per
default.
gnu_errfmt
Se impostata, i messaggi di errore della shell vengono
scritti nel formato GNU standard dei messaggi di errore.
histappend
Se impostata, l'elenco della cronologia accodato al
file indicato dalla variabile HISTFILE all'uscita della
shell, invece che sostituire il file preesistente.
histreedit
Se impostata, e readline
in uso, viene data l'opportunit a un utente di ripetere
una sostituzione della cronologia che non ha avuto suc-
cesso.
histverify
Se impostata, e readline
in uso, i risultati della sostituzione della cronologia
non sono immediatamente passati all'analizzatore della
shell. Invece, la riga risultante viene caricata nel
buffer di editing readline,permettendo ulteriori modi-
fiche.
hostcomplete
Se impostata, e readline
in uso, bash tenta di effettuare il completamento del
nome di host quando una parola contenente un @ in corso
di completamento (si veda Completamento in precedenza,
sotto READLINE . Questa abilitata per default.
huponexit
Se impostata, bash invia SIGHUP a tutti i job all'uscita
di una shell di login interattiva.
interactive_comments
Se impostata, fa s che, se una parola inizia con # ,
quella parola e tutti i caratteri rimanenti su quella
riga siano ignorati in una shell interattiva (si veda
COMMENTI sopra). Quest'opzione abilitata per default.
lithist Se impostata, e l'opzione cmdhist
abilitata, i comandi multiriga sono salvati nella
cronologia includendo i newline, piuttosto che usando
come separatori il punto e virgola, dove possibile.
login_shell
La shell imposta quest'opzione se viene avviata come
shell di login (si veda INVOCAZIONE sopra). Il valore
non pu essere cambiato.
mailwarn
Se impostata, e un file sul quale bash sta ricercando
della posta ha avuto un accesso dall'ultima volta che
stato controllato, viene visualizzato il messagio ``The
mail in mailfile has been read''.
no_empty_cmd_completion
Se impostata, e readline
in uso, bash non tenta di cercare il PATH per possibili
completamenti quando viene tentato il completamento di
una riga vuota.
nocaseglob
Se impostata, bash individua i nomi di file senza dis-
tinguere le maiuscole dalle minuscole quando effettua
l'espansione del percorso (si veda Espansione del per-
corso sopra).
nocasematch
Se impostata, bash confronta modellisenza distinguere le
maiuscole dalle minuscole quando ricerca corrispondenze
mentre esegue i comandi condizionali case o [[.
nullglob
Se impostata, bash permette ai modelli che non individu-
ano nessun file (si veda Espansione del percorso sopra)
di espandere come una stringa nulla, piuttosto che
essere presi letteralmente.
progcomp
Se impostata, i servizi di completamento programmabile
(si veda Completamento programmabile sopra) vengono
abilitati. Quest'opzione abilitata per default.
promptvars
Se impostata, le stringhe di prompt subiscono espansione
di parametro, sostituzione di comando, espansione arit-
metica e rimozione dei segni di quotatura dopo che sono
stati espansi come descritto in STRINGHE DI PROMPT
sopra. Quest'opzione abilitata per default.
restricted_shell
La shell imposta quest'opzione se stata avviata in
modalit ristretta (si veda SHELL RISTRETTA pi avanti).
Il valore non pu essere cambiato. Questo non viene
reimpostato quando i file di avvio vengono eseguiti,
permettendo ai file di avvio di accertare se una shell
ristretta o meno.
shift_verbose
Se impostata, il comando incorporato shift stampa un
messaggio di errore quando il numero di comandi shift
effettuati eccede il numero dei parametri posizionali.
sourcepath
Se impostata, il comando incorporato source (.) usa il
valore di PATH per trovare la directory contenente il
file fornito come argomento. Quest'opzione abilitata
per default.
xpg_echo
Se impostata, il comando incorporato echo espande
sequenze di protezione backslash per default.
suspend [-f]
Sospende l'esecuzione di questa shell fino a che non riceve un
segnale SIGCONT. L'opzione -f dice di non preoccuparsi se
questa una shell di login; va sospesa comunque. Lo stato di
ritorno 0 tranne quando la shell una shell di login e non
fornito -f, o se il job-control non abilitato.
test expr
[ expr ]
Ritorna uno stato di 0 o 1 a seconda del risultato della valu-
tazione dell'espressione condizionale expr. Ogni operatore e
operando deve essere un argomento separato. Le espressioni sono
composte dagli elementi descritti in precedenza, sotto ESPRES-
SIONI CONDIZIONALI. test non accetta opzioni, n accetta, igno-
randolo, un argomento -- come indicatore di fine delle opzioni.
Le espressioni possono essere combinate usando i seguenti opera-
tori, elencati in ordine decrescente di precedenza.
! expr Vero se expr
falso.
( expr )
Ritorna il valore di expr. Questo pu essere usato per
modificare la normale precedenza degli operatori.
expr1 -a expr2
Vero se sia expr1 che expr2 sono vere.
expr1 -o expr2
Vero se o expr1 o expr2
vera.
test e [ valutano espressioni condizionali usando una serie di
regole basate sul numero di argomenti.
0 argomenti
L'espressione falsa.
1 argomento
L'espressione vera se e solo se l'argomento non nullo.
2 argomenti
Se il primo argomento !, l'espressione vera se e solo
se il secondo argomento nullo. Se il primo argomento
uno degli operatori condizionali elencati in precedenza,
sotto ESPRESSIONI CONDIZIONALI, l'espressione vera se il
test unario vero. Se il primo argomento non un opera-
tore condizionale unario valido, l'espressione falsa.
3 argomenti
Se il secondo argomento uno degli operatori binari con-
dizionali elencati in precedenza, sotto ESPRESSIONI CON-
DIZIONALI, il risultato dell'espressione il risultato
del test binario che usa gli argomenti primo e terzo come
operandi. Se il primo argomento !, il valore la
negazione del test con due argomenti costituito dagli
argomenti secondo e terzo. Se il primo argomento esat-
tamente ( e il terzo argomento esattamente ), il risul-
tato il test, con 1 argomento, del secondo argomento.
Altrimenti, l'espressione falsa. Gli operatori -a e -o
sono considerati in questo caso operatori binari
4 argomenti
Se il primo argomento !, il risultato la negazione
dell'espressione composta dai rimanenti argomenti.
Altrimenti, l'espressione analizzata e valutata secondo
le precedenze usando le regole elencate sopra.
5 o pi argomenti
L'espressione analizzata e valutata secondo le prece-
denze usando le regole elencate sopra.
times Stampa i tempi spesi come utente e come sistema per la shell e
per i processi eseguiti dalla shell. Lo stato di ritorno 0.
trap [-lp] [[arg] sigspec ...]
Il comando arg dev'essere letto e eseguito quando la shell
riceve il segnale(i) sigspec. Se arg
assente (e c' un singolo sigspec) o -, ogni segnale specificato
riportato alla sua configurazione originale (il valore che aveva
al momento dell'ingresso nella shell). Se arg
la stringa nulla il segnale specificato da ogni sigspec
ignorato dalla shell e dai comandi che essa invoca. Se arg non
presente e -p
stato fornito, allora i comandi di intercettazione di segnale
associati a ogni sigspec vengono visualizzati. Se non viene
fornito alcun argomento o se
dato solo -p , trap stampa la lista dei comandi associati a
ogni segnale. L'opzione -l fa s che la shell stampi una lista
di nomi di segnale e i numeri a loro corrispondenti. Ogni
sigspec
o un nome di segnale definito in <signal.h>, o un numero di
segnale. I nomi di segnale possono essere scritti sia in minus-
colo che in maiuscolo e il prefisso SIG opzionale. Se un
sigspec
EXIT (0) il comando arg
eseguito all'uscita della shell. Se un sigspec
DEBUG, il comando arg viene eseguito prima di ogni comando sem-
plice, comando for, comando case, comando select, ogni comando
for aritmetico, e prima di eseguire il primo comando in una fun-
zione di shell (si veda GRAMMATICA DELLA SHELL sopra). Fare
riferimento alla descrizione dell'opzione extdebug del comando
incorporato shopt per dettagli sul suo effetto nella gestione
del segnale DEBUG. Se un sigspec
ERR il comando arg viene eseguito ogni volta che un comando sem-
plice ha uno stato di uscita diverso da 0, tenuto conto delle
seguenti condizioni. La gestione del segnale ERR non viene
invocata se il comando in errore fa parte della lista di comandi
immediatamente seguente un comando while o until , se fa parte
del test in un'istruzione if ,
se fa parte di una lista && o || , o se il valore di ritorno
del comando in esecuzione viene negato da un !. Queste sono le
stesse condizioni imposte all'opzione errexit. Se un sigspec
RETURN, il comando arg viene eseguito ogni volta che una fun-
zione di shell o uno script eseguito coi comandi incorporati . o
source completa l'esecuzione. I segnali ignorati al momento
dell'ingresso della shell non possono essere intercettati o
resettati. I segnali intercettati non ignorati sono riportati
al loro valore originale in un processo figlio quando esso cre-
ato. Lo stato di ritorno falso se un sigspec non valido;
altrimenti trap ritorna 0 [vero].
type [-aftpP] nome [nome ...]
Senza opzioni, indica come dovr essere interpretato ciascun nome
se usato come un nome di comando. Se usata l'opzione -t, type
stampa una stringa che una fra alias, keyword, function,
builtin, o file se nome , rispettivamente, un alias, una parola
riservata della shell, una funzione, un comando incorporato, o
un file su disco. Se il nome non trovato, non viene stampato
nulla, ed ritornato uno stato d'uscita di falso. Se viene
usata l'opzione -p, type ritorna o il nome del file su disco che
dovrebbe essere eseguito se nome fosse specificato come nome di
comando, o nulla se ``type -t nome'' non avesse ritornato file.
L'opzione -P forza PATH a ricercare ogni nome, anche se ``type
-t nome'' non dovesse ritornare file. Se un comando nella
tabella hash, -p e -P stampano il valore nella tabella hash, non
necessariamente il file che appare per primo in PATH. Se viene
usata l'opzione -a, type stampa tutti le posizioni che cor-
rispondono a un eseguibile chiamato nome. Questo include alias
e funzioni, se e solo se non viene usata anche l'opzione -p. La
tabella hash dei comandi non consultata quando si usa -a.
L'opzione -f sopprime la ricerca della funzione di shell, come
col comando incorporato command. type ritorna 0 [vero] se uno
qualsiasi degli argomenti viene trovato, falso se non ne
trovato nemmeno uno.
ulimit [-SHacdefilmnpqrstuvx [limite]]
Fornisce controllo sulle risorse disponibili per la shell e per
i processi avviati da essa, sui sistemi che consentono un tale
controllo. Le opzioni -H e -S specificano che viene impostato
il limite hard o limite soft per la data risorsa. Un limite
hard non pu essere aumentato una volta impostato; un limite soft
pu essere aumentato fino al valore del limite hard. Se n -H n
-S sono specificati, vengono impostati entrambi i limiti, hard e
soft. Il valore di limite pu essere un numero nell'unit speci-
ficata per la risorsa, o uno dei valori speciali hard, soft o
unlimited. che stanno rispettivamente per limite hard corrente,
limite soft corrente e nessun limite. Se limite
omesso, viene stampato il valore corrente del limite soft della
risorsa, a meno che non venga data l'opzione -H. Quando speci-
ficata pi di una risorsa, il nome del limite e l'unit vengono
stampati prima del valore. Le altre opzioni sono interpretate
come segue:
-a sono riportati tutti i limiti correnti
-c la dimensione massima dei file core creati
-d la dimensione massima del segmento dati di un processo
-e La priorit massima di schedulazione dei processi ("nice")
-f la dimensione massima dei file scritti dalla shell e dai
suoi figli
-i Il numero massimo di segnali pendenti
-l la dimensione massima di memoria che pu essere bloccata
-m la dimensione massima della memoria occupata.
-n il numero massimo di descrittori di file aperti (la mag-
gior parte dei sistemi non permette che questo valore sia
cambiato)
-p la dimensione delle pipe in blocchi da 512 byte (questo
non pu essere cambiato)
-q Il numero massimo di byte nelle code dei messaggi POSIX
-r La priorit massima di schedulazione dei processi in tempo
reale
-s la dimensione massima dello stack
-t il massimo quantitativo di tempo macchina utilizzabile,
in secondi
-u il numero massimo di processi disponibili per un singolo
utente
-v Il massimo ammontare di memoria virtuale disponibile per
la shell
-x Il numero massimo di file lock
Se limite
dato, esso il nuovo valore della risorsa specificata
(l'opzione -a
solo per visualizzazione). Se nessuna opzione data, allora
assunta -f. I valori sono in multipli di 1024 byte, tranne che
per -t, che in secondi, -p, che in unit di blocchi da 512
byte, e -n e -u, che sono numeri puri. Lo stato di ritorno 0
tranne quando viene incontrata un'opzione o un argomento non
valido, o avvenga un errore mentre si imposta un nuovo limite.
umask [-p] [-S] [modo]
La maschera di creazione dei file dell'utente impostata a modo.
Se modo inizia con una cifra,
interpretato come numero ottale; altrimenti interpretato come
una maschera simbolico di modo simile a quelle accettate da
chmod(1). Se modo
omesso, viene stampato il valore corrente della maschera.
L'opzione -S fa s che la maschera venga stampata in formato sim-
bolico; l'output di default un numero ottale. Se viene fornita
l'opzione -p e modo
omesso, l'output in una forma riutilizzabile come input. Lo
stato di ritorno 0 se il modo stato cambiato con successo o se
nessun argomento modo era stato fornito, e falso altrimenti.
unalias [-a] [nome ...]
Rimuove ciascun nome dalla lista degli alias definiti. Se si
specifica -a , sono rimosse tutte le definizioni di alias. Il
valore di ritorno 0 [vero] tranne quando un nome fornito non
un alias attualmente definito.
unset [-fv] [nome ...]
Per ciascun nome, rimuove la corrispondente variabile o fun-
zione. Se non vengono fornite opzioni, o specificata l'opzione
-v , ogni nome designa una variabile di shell. Le variabili in
sola lettura non possono essere rimosse. Se viene specificata
-f , ogni nome designa una funzione di shell, e la definizione
di funzione viene rimossa. Ogni variabile o funzione rimossa
eliminata dall'ambiente passato ai comandi successivi. Se una
qualsiasi fra RANDOM, SECONDS, LINENO, HISTCMD, FUNCNAME, GROUPS
o DIRSTACK
annullata, perde la sua speciale propriet, anche se viene suc-
cessivamente ridefinita. Lo stato d'uscita 0 [vero] a meno che
un nome non sia in sola lettura.
wait [n ...]
Aspetta ogni processo specificato e ritorna il suo stato di com-
pletamento. Ciascun n pu essere un ID di processo o una speci-
ficazione di job; se data una specificazione di job, si aspet-
tano tutti i processi nella pipeline di quel job. Se n
omesso, si aspettano tutti i processi figli correntemente
attivi, e lo stato di ritorno 0. Se n specifica un processo o
job non esistenti, lo stato di ritorno 127. Altrimenti, lo
stato di ritorno lo stato d'uscita dell'ultimo processo o job
di cui si atteso il completamento.
Se bash
avviata col nome rbash, o l'opzione -r viene fornita all'invocazione,
la shell diventa ristretta. Una shell ristretta usata per impostare
un ambiente pi controllato di quello della shell standard. Si comporta
identicamente a bash con l'eccezione che quel che segue o non permesso
o non effettuato:
+o cambiare le directory con cd
+o impostare o rimuovere i valori di SHELL, PATH, ENV o BASH_ENV
+o specificare nomi di comando contenenti un /
+o specificare un nome di file contenente un / come argomento al
comando incorporato .
+o Specificare un nome di file contenente una barra [/] come argo-
mento all'opzione -p del comando incorporato hash
+o importare definizioni di funzione dall'ambiente della shell
all'avvio
+o analizzare il valore di SHELLOPTS dall'ambiente di shell
all'avvio
+o ridirigere l'output usando gli operatori di ridirezione >, >|,
<>, >&, &>, e >>
+o usare il comando incorporato exec per sostituire la shell con un
altro comando
+o aggiungere o eliminare comandi incorporati con le opzioni -f e
-d del comando incorporato enable
+o Usare il comando incorporato enable per abilitare comandi incor-
porati della shell che sono disabilitati
+o specificare l'opzione -p al comando incorporato command
+o disattivare la modalit ristretta con set +r o set +o restricted.
Queste restrizioni sono imposte dopo aver letto eventuali file di
avvio.
Quando viene eseguito un comando che viene riconosciuto come uno script
di shell (si veda ESECUZIONE DI UN COMANDO sopra), rbash rimuove ogni
restrizione nella shell creata dalla shell genitrice per eseguire lo
script.
Bash Reference Manual, Brian Fox and Chet Ramey
The Gnu Readline Library, Brian Fox and Chet Ramey
The Gnu History Library, Brian Fox and Chet Ramey
Portable Operating System Interface (POSIX) Part 2: Shell and Utili-
ties, IEEE
sh(1), ksh(1), csh(1)
emacs(1), vi(1)
readline(3)
/bin/bash
L'eseguibile bash
/etc/profile
Il file di inizializzazione generale di sistema, eseguito per le
shell di login
~/.bash_profile
Il file di inizializzazione personale, eseguito per le shell di
login
~/.bashrc
Il file di inizializzazione individuale per ogni shell interat-
tiva
~/.bash_logout
Il file di pulizia della shell di login individuale, eseguito
quando una shell di login termina
~/.inputrc
Il file di inizializzazione individuale per readline
Brian Fox, Free Software Foundation
bfox [AT] gnu.org
Chet Ramey, Case Western Reserve University
chet [AT] po.edu
Se trovate un baco [bug] in bash, dovreste segnalarlo. Ma prima,
dovreste assicurarvi che sia veramente un baco, e che appaia nella ver-
sione pi recente di bash . L'ultima versione sempre disponibile da
ftp://ftp.gnu.org/pub/bash/.
Una volta determinato che avete individuato realmente un baco, usate il
comando bashbug per inviare una notifica del baco. Se avete una cor-
rezione, siete invitati a inviare anche quella! Suggerimenti e rap-
porti su bachi 'filosofici' possono essere inviati a bug-bash [AT] gnu.org o
inviati al newsgroup su Usenet gnu.bash.bug.
TUTTI i rapporti su bachi dovranno includere:
Il numero di versione di bash
L'hardware e il sistema operativo
Il compilatore usato per compilare
Una descrizione del comportamento bacato
Un breve script o `ricetta' che produca il baco
bashbug inserisce le prime tre voci automaticamente nel modello che
fornisce per compilare una notifica di baco.
Commenti e notifiche su bachi riguardanti questa pagina di manuale
dovranno essere indirizzati a chet [AT] po.edu.
troppo grande e troppo lenta.
Vi sono alcune sottili differenze tra bash e le versioni tradizionali
di sh, soprattutto per via delle specifiche POSIX
In alcuni casi gli alias possono essere causa di confusione.
Comandi incorporati della shell e funzioni non sono
sospendibili/riavviabili.
Comandi composti e sequenze di comandi nella forma di `a ; b ; c' non
sono trattati in modo completamente corretto quando viene richiesta la
sospensione di un processo. Quando un processo viene sospeso, la shell
esegue immediatamente il comando che lo segue immediatamente. Basta
mettere una sequenza di comandi fra parentesi per forzarla in una sub-
shell, che pu essere sospesa come se fosse un'unica entit.
I comandi all'interno di una sostituzione di comando $(...) non sono
analizzati finch non stata tentata la sostituzione. Questo posticipa
la scoperta di errori a qualche tempo dopo che stato dato il comando.
Per esempio, parentesi aperte e non chiuse e viceversa, anche
all'interno di commenti di shell, producono un messaggio di errore gi
mentre il costrutto in fase di lettura.
Le variabili di array non possono essere esportate (per il momento).
GNU Bash-3.2 2006 September 28 BASH(1)