[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico] [volume] [parte]


Capitolo 713.   Shell POSIX

713.1   Parametri comuni

Parametro Descrizione
n
Un parametro posizionale è definito da una o più cifre numeriche a eccezione dello zero che ha invece un significato speciale. I parametri posizionali rappresentano gli argomenti forniti al comando: 1 è il primo, 2 è il secondo e così di seguito. Quando si utilizza un parametro composto da più di una cifra numerica, è indispensabile racchiuderlo tra parentesi graffe; per esempio: ${10}, ${11},...
0
Restituisce il nome della shell o dello script. Se la shell viene avviata con un file di comandi, $0 si espande nel nome di quel file. Se la shell viene avviata con l'opzione -c, $0 si espande nel primo argomento dopo la stringa dei comandi (sempre che ce ne sia uno).
*
Rappresenta l'insieme di tutti i parametri posizionali a partire dal primo. Quando viene utilizzato all'interno di apici doppi, rappresenta un'unica parola composta dal contenuto dei parametri posizionali, spaziati dal primo carattere contenuto nella variabile speciale IFS. Se questa variabile non è definita, viene utilizzato uno spazio singolo. Per esempio, se IFS contenesse la sequenza xyz, "$*" sarebbe equivalente a "$1x$2x...".
La variabile di shell IFS contiene di solito la sequenza: <SP><HT><LF> (corrispondente a uno spazio normale, un carattere di tabulazione e al codice di interruzione di riga nella maggior parte dei sistemi Unix). Di conseguenza, viene utilizzato normalmente il carattere spazio (<SP>) per staccare i vari parametri posizionali. Per cui, in pratica, la maggior parte delle volte, "$*" equivale a "$1 $2...".
@
Rappresenta l'insieme di tutti i parametri posizionali a partire dal primo. Quando viene utilizzato all'interno di apici doppi, rappresenta una serie di parole, ognuna composta dal contenuto del parametro posizionale rispettivo. Di conseguenza, "$@" equivale a "$1" "$2" ... "$n". Questo comportamento rappresenta un'eccezione rispetto agli altri parametri che invece si limitano a generare una sola parola.
#
Restituisce il numero di parametri posizionali esistenti.
?
Restituisce il valore restituito dall'ultimo condotto eseguito in primo piano (foreground). In pratica, restituisce il valore dell'ultimo comando eseguito.
-
Il trattino, restituisce la serie di lettere corrispondenti alle modalità configurabili attraverso il comando interno set o con opzioni particolari della riga di comando.
$
Restituisce il numero PID della shell. Se viene utilizzato all'interno di una subshell, cioè tra parentesi tonde, restituisce il numero PID della shell principale e non quello della subshell.
!
Restituisce il numero PID del processo avviato più di recente e messo sullo sfondo.

713.2   Variabili di ambiente comuni

Variabile Descrizione
PWD
La directory corrente. Il contenuto della variabile viene modificato dal comando cd.
OLDPWD
La directory corrente visitata precedentemente. Il contenuto della variabile viene modificato dal comando cd.
PPID
Il numero PID del processo genitore della shell attuale.
IFS
Internal field separator. Il contenuto predefinito della variabile dovrebbe essere: <SP><HT><LF>.
PATH
I percorsi di ricerca per i comandi, separati dal carattere :.
HOME
La directory personale dell'utente.
CDPATH
Il percorso di ricerca per il comando cd (di solito la variabile contiene la stringa nulla).
MAIL
Il percorso del file che rappresenta la cartella di posta in entrata dell'utente.
MAILCHECK
La frequenza, in secondi, con cui si deve verificare la presenza di messaggi nuovi nella cartella corrispondente alla variabile MAIL. Se MAILCHECK è vuota o contiene il valore zero, il controllo avviene ogni volta che deve essere emesso un nuovo invito.
MAILPATH
Questa variabile, se definita, prende il sopravvento su MAIL e definisce un elenco di percorsi per altrettante cartelle di posta elettronica alternative. L'elenco è separato con il carattere :.
OPTIND
Contiene l'indice del prossimo argomento da elaborare dal comando getopts.
OPTARG
Il valore dell'ultimo argomento elaborato da getopts.
PS1
L'invito primario. Di solito, il valore predefinito di questa variabile fa sì che sia rappresentato un dollaro o un cancelletto a seconda che si tratti di un utente comune o dell'utente root.
PS2
L'invito secondario, che appare quando si deve completare un comando. Il valore predefinito è normalmente .
ENV
Il nome di un file di configurazione per una shell POSIX.

713.3   Espansione e sostituzione

Espansioni e sostituzioni relative a parametri, variabili, comandi ed espressioni:

Modello Descrizione
$parametro | ${parametro}
$variabile | ${variabile}
In uno di questi modi si ottiene la sostituzione del parametro o della variabile con il suo contenuto.
$(comando)
`comando`
Sostituzione di comando: quanto emesso attraverso lo standard output dal comando viene usato nell'espansione.
$((espressione))
Esegue l'espressione aritmetica e si espande nel suo risultato.

Operatori aritmetici:

Operatore e
operandi
Descrizione
+op
Non ha alcun effetto.
-op
Inverte il segno dell'operando.
op1 + op2
Somma i due operandi.
op1 - op2
Sottrae dal primo il secondo operando.
op1 * op2
Moltiplica i due operandi.
op1 / op2
Divide il primo operando per il secondo.
op1 % op2
Modulo: il resto della divisione tra il primo e il secondo operando.
var = valore
Assegna alla variabile il valore alla destra.
op1 += op2
op1 = op1 + op2
op1 -= op2
op1 = op1 - op2
op1 *= op2
op1 = op1 * op2
op1 /= op2
op1 = op1 / op2
op1 %= op2
op1 = op1 % op2

Espansione relativa a nomi di file e di directory:

Modello Descrizione
~
Corrisponde al contenuto della variabile di ambiente HOME (la directory personale dell'utente che sta usando la shell.
~utente
Corrisponde alla directory personale dell'utente.
*
Corrisponde a qualsiasi stringa, compresa la stringa nulla.
?
Corrisponde a un carattere qualsiasi (uno solo).
[...]
Corrisponde a uno qualsiasi dei caratteri racchiusi tra parentesi quadre.
[!...]
Corrisponde a tutti i caratteri esclusi quelli indicati.
[a-z]
Corrisponde a uno qualsiasi dei caratteri compresi nell'intervallo da a a z.
[!a-z]
Corrisponde a tutti i caratteri esclusi quelli appartenenti all'intervallo indicato.

713.4   Comandi

Sintassi Descrizione
[!] comando_1 [ | comando_2...] Condotto.
comando_1 ; comando_2
Esegue il primo comando e al termine avvia il secondo.
comando &
Avvio sullo sfondo (background).
comando_1 & comando_2
Avvia sullo sfondo il primo comando e avvia immediatamente il secondo comando.
comando_1 && comando_2
Esegue il primo comando e se ciò avviene con successo, esegue anche il secondo comando.
comando_1 || comando_2
Esegue il primo comando e se questo restituisce Falso esegue anche il secondo comando.
(comando_1 ; comando_2 ; ...)
Lista di comandi da eseguire in una subshell.
{ comando_1 ; comando_2 ; ... ; }
Lista di comandi da eseguire normalmente concatenando l'output generato (il contenuto deve essere separato dalle parentesi graffe).

713.5   Job

Riferimento ai job Descrizione
%n
Il simbolo % seguito da un numero fa riferimento al job con quel numero.
%prefisso
Il simbolo % seguito da una stringa fa riferimento a un job con un nome che inizia con quel prefisso. Se esiste più di un job sospeso con lo stesso prefisso si ottiene una segnalazione di errore.
%?stringa
Il simbolo % seguito da ? e da una stringa fa riferimento a un job con una riga di comando contenente quella stringa. Se esiste più di un job del genere si ottiene una segnalazione di errore.
%% | %+
Le notazioni %% o %+ fanno riferimento al job corrente dal punto di vista della shell, che corrisponde all'ultimo job sospeso.
%-
La notazione %- fa riferimento al penultimo job sospeso.
Utilizzando i comandi bg e fg, in mancanza di un riferimento esplicito al job, viene preso in considerazione quello «corrente» dal punto di vista della shell.

713.6   Ridirezione

Sintassi Descrizione
[n]< file
La ridirezione dell'input fa sì che il file il cui nome risulta dall'espansione della parola alla destra del simbolo < venga letto e inviato al descrittore di file n, oppure, se non indicato, allo standard input pari al descrittore di file zero.
[n]> file
La ridirezione dell'output fa sì che il file il cui nome risulta dall'espansione della parola alla destra del simbolo > venga aperto in scrittura per ricevere quanto proveniente dal descrittore di file n, oppure, se non indicato, dallo standard output pari al descrittore di file numero uno.
Di solito, se il file da aprire in scrittura esiste già, viene sovrascritto.
[n]>> file
La ridirezione dell'output fatta in questo modo fa sì che se il file da aprire in scrittura esiste già, questo non sia sovrascritto, ma gli siano semplicemente aggiunti i dati.
<<[-] parola_di_delimitazione
    testo
    ...
parola_di_delimitazione
Si tratta di un tipo di ridirezione particolare e poco usato. Istruisce la shell di leggere le righe successive fino a quando viene incontrata la parola indicata (senza spazi iniziali); successivamente invia quanto accumulato in questo modo allo standard input del comando indicato. In pratica, la parola indica la fine della fase di lettura. Non è possibile fare giungere l'input da una fonte diversa.
Se la parola viene racchiusa tra virgolette, quelle usate per la protezione delle stringhe, si intende che il testo che viene inserito non deve essere espanso. Altrimenti, il testo viene espanso come di consueto.
Se si usa il trattino (<<-), significa che le tabulazioni iniziali nel testo vengono eliminate.
[n]<&m
In questo modo si unisce il descrittore m al descrittore n di ingresso oppure, in mancanza dell'indicazione di n, si unisce allo standard input.
[n]<&-
Chiude il descrittore n oppure, in mancanza dell'indicazione di n, chiude lo standard input.
[n]>&m
In questo modo si unisce il descrittore n al descrittore m di uscita oppure, in mancanza dell'indicazione di n, si unisce lo standard output.
[n]>&-
Chiude il descrittore n oppure, in mancanza dell'indicazione di n, chiude lo standard output.
[n]<> file
In questo modo si apre il file indicato in lettura e scrittura, collegando i due flussi al descrittore n. Se questo descrittore non è specificato si intende l'utilizzo di entrambi standard input e standard output.

713.7   Strutture di controllo

Sintassi Descrizione
for variabile [in valore...]
do
    lista_di_comandi
done
La variabile indicata dopo for viene posta, di volta in volta, al valore di ciascun elemento della lista che segue la sigla in, eseguendo ogni volta la lista di comandi che segue do (una volta per ogni valore disponibile). Se la sigla in (e i suoi argomenti) viene omessa, il comando for esegue la lista di comandi (do) una volta per ogni parametro posizionale esistente. In pratica è come se venisse usato: in $@.
case parola in
    [modello [ | modello]... ) \
  \lista_di_comandi ;; ]
    ...
    [*) lista_di_comandi ;; ]
esac
La parola che segue case viene confrontata con ognuno dei modelli, usando le stesse regole dell'espansione di percorso (i nomi dei file). La barra verticale (|) viene usata per separare i modelli quando questi rappresentano possibilità diverse di un'unica scelta.
Quando viene trovata una corrispondenza, viene eseguita la lista di comandi corrispondente. Dopo il primo confronto riuscito, non ne vengono controllati altri dei successivi. L'ultimo modello può essere *), corrispondente a qualunque valore, che si può usare come alternativa finale in mancanza di altro.

if lista_condizione
then
    lista_di_comandi
[elif lista_condizione
then
    lista_di_comandi]
...
[else
    lista_di_comandi]
fi
Inizialmente viene eseguita la lista che segue if che costituisce la condizione. Se il valore restituito da questa lista è zero (cioè Vero), allora viene eseguita la lista seguente then e il comando termina. Altrimenti viene eseguita ogni elif in sequenza, fino a che ne viene trovata una la cui condizione si verifica. Se nessuna condizione si verifica, viene eseguita la lista che segue else, sempre che esista.
while lista_condizione
do
    lista_di_comandi
done
Il comando while esegue ripetitivamente la lista che segue do finché la lista che rappresenta la condizione continua a restituire il valore zero (Vero).
until lista_condizione
do
    lista_di_comandi
done
Il comando until è analogo a while, cambia solo l'interpretazione della lista che rappresenta la condizione nel senso che il risultato di questa viene invertito (negazione logica). In generale, per avere maggiori garanzie di compatibilità conviene utilizzare solo il comando while, invertendo opportunamente la condizione.
[function] nome () {
    lista_di_comandi
}
La lista di comandi viene eseguita ogni volta che il nome della funzione è utilizzato come comando.
Quando viene eseguita una funzione, i parametri posizionali contengono gli argomenti di questa funzione e anche # restituisce un valore corrispondente alla situazione.
È possibile utilizzare il comando interno return per concludere anticipatamente l'esecuzione della funzione.

713.8   Comando «echo»

Comando Descrizione
echo [-n] [argomento...]
Emette gli argomenti separati da uno spazio. Restituisce sempre il valore zero. echo riconosce alcune sequenze di escape che possono essere utili per formattare il testo da visualizzare.
L'opzione -n consente di impedire che alla fine del testo visualizzato sia inserito il codice di interruzione di riga finale, in modo che il testo emesso successivamente prosegua di seguito.
Si osservi che la shell Bash non riconosce le sequenze di escape se non si aggiunge espressamente l'opzione -e, oppure si abilita l'opzione xpg_echo con il comando: shopt -s xpg_echo.

Alcune sequenze di escape che possono essere riconosciute dal comando echo:

Codice Descrizione
\\
Inserisce la barra obliqua inversa (\).
\a
Inserisce il codice <BEL> (avvisatore acustico).
\b
Inserisce il codice <BS> (backspace).
\c
Alla fine di una stringa previene l'inserimento di una nuova riga.
\f
Inserisce il codice <FF> (formfeed).
\n
Inserisce il codice <LF> (linefeed).
\r
Inserisce il codice <CR> (carriage return).
\t
Inserisce una tabulazione normale (<HT>).
\v
Inserisce una tabulazione verticale (<VT>).
\nnn
Inserisce il carattere corrispondente al codice ottale n.

713.9   Comando «set»

Comando Descrizione
set [{-|+}x]...
set {-|+}o [modalità]
set valore_param_1 \
  \[valore_param_2...]
set -- [valore_param_1 \
  \[valore_param_2...]]
Questo comando, se usato senza argomenti, emette l'impostazione generale della shell, nel senso che vengono visualizzate tutte le variabili di ambiente e le funzioni. Se si indicano degli argomenti si intendono alterare alcune modalità (opzioni) legate al funzionamento della shell.

Alcune modalità, che potrebbero essere riconosciute dalla maggior parte delle shell POSIX:

Modalità Descrizione
{-|+}a
{-|+}o allexport
Le variabili che vengono modificate o create, sono marcate automaticamente per l'esportazione verso l'ambiente per i comandi avviati dalla shell.
{-|+}b
{-|+}o notify
Fa in modo che venga riportato immediatamente lo stato di un job sullo sfondo che termina. Altrimenti, questa informazione viene emessa subito prima dell'invito primario successivo.
{-|+}e
{-|+}o errexit
Termina immediatamente se un comando qualunque conclude la sua esecuzione restituendo uno stato diverso da zero. La shell non esce se il comando che fallisce è parte di un ciclo until o while, di un'istruzione if, di una lista && o ||, o se il valore restituito dal comando è stato invertito per mezzo di !.
{-|+}f
{-|+}o noglob
Disabilita l'espansione di percorso (quello che riguarda i caratteri jolly nei nomi di file e directory).
{-|+}m
{-|+}o monitor
Abilita il controllo dei job. Questa modalità è attiva in modo predefinito per le shell interattive.
{-|+}n
{-|+}o noexec
Legge i comandi, ma non li esegue. Ciò può essere usato per controllare gli errori di sintassi di uno script di shell. Questo valore viene ignorato dalle shell interattive.
{-|+}u
{-|+}o nounset
Fa in modo che venga considerato un errore l'utilizzo di variabili non impostate (predisposte) quando si effettua l'espansione di una variabile (o di un parametro). In tal caso, quindi, la shell emette un messaggio di errore e, se il funzionamento non è interattivo, termina restituendo un valore diverso da zero.
{-|+}v
{-|+}o verbose
Emette le righe inserite nella shell appena queste vengono lette.
{-|+}x
{-|+}o xtrace
Nel momento in cui si eseguono dei comandi, viene emesso il comando stesso attraverso lo standard output preceduto da quanto contenuto nella variabile PS4.
{-|+}C
{-|+}o noclobber
Disabilita la sovrascrittura dei file preesistenti a seguito di una ridirezione dell'output attraverso l'uso degli operatori >, >& e <>. Questa impostazione può essere scavalcata (in modo da riscrivere i file) utilizzando l'operatore di ridirezione >| al posto di >.
In generale sarebbe meglio evitare di intervenire in questo modo, dal momento che ciò non è conforme allo standard di utilizzo normale.

713.10   Comando «test»

Comando Descrizione
test espressione_condizionale
[ espressione_condizionale ]
Risolve (valuta) l'espressione indicata (la seconda forma utilizza semplicemente un'espressione racchiusa tra parentesi quadre). Il valore restituito può essere Vero (corrispondente a zero) o Falso (corrispondente a uno) ed è pari al risultato della valutazione dell'espressione. Le espressioni possono essere unarie o binarie. Le espressioni unarie sono usate spesso per esaminare lo stato di un file. Vi sono operatori su stringa e anche operatori di comparazione numerica. Ogni operatore e operando deve essere un argomento separato.
Se si usa la forma tra parentesi quadre, è indispensabile che queste siano spaziate dall'espressione da valutare.
Espressione Descrizione
-e file
Vero se il file esiste ed è di qualunque tipo.
-b file
Vero se il file esiste ed è un dispositivo a blocchi.
-c file
Vero se il file esiste ed è un dispositivo a caratteri.
-d file
Vero se il file esiste ed è una directory.
-f file
Vero se il file esiste ed è un file normale.
-h file
Vero se il file esiste ed è un collegamento simbolico.
-p file
Vero se il file esiste ed è un file FIFO (pipe con nome).
-S file
Vero se il file esiste ed è un socket.
-t
Vero se lo standard output è aperto su un terminale.
-g file
Vero se il file esiste ed è impostato il suo bit SGID.
-u file
Vero se il file esiste ed è impostato il suo bit SUID.
-k file
Vero se il file ha il bit Sticky attivo.
-r file
Vero se il file esiste ed è leggibile.
-w file
Vero se il file esiste ed è scrivibile.
-x file
Vero se il file esiste ed è eseguibile.
-O file
Vero se il file esiste e appartiene all'UID efficace dell'utente attuale.
-G file
Vero se il file esiste e appartiene al GID efficace dell'utente attuale.
-s file
Vero se il file esiste e ha una dimensione maggiore di zero.
file1 -nt file2
Vero se il primo file ha la data di modifica più recente.
file1 -ot file2
Vero se il primo file ha la data di modifica più vecchia.
file1 -et file2
Vero se i due nomi corrispondono allo stesso inode.
stringa
Vero se la stringa è diversa dalla stringa nulla.
-z stringa
Vero se la lunghezza della stringa è zero.
-n stringa
Vero se la lunghezza della stringa è diversa da zero.
stringa1 = stringa2
Vero se le stringhe sono uguali.
stringa1 != stringa2
Vero se le stringhe sono diverse.
stringa1 < stringa2
Vero se la prima stringa è lessicograficamente precedente.
stringa1 > stringa2
Vero se la prima stringa è lessicograficamente successiva.
op1 -eq op2
Vero se gli operandi sono uguali.
op1 -ne op2
Vero se gli operandi sono differenti.
op1 -lt op2
Vero se il primo operando è inferiore al secondo.
op1 -le op2
Vero se il primo operando è inferiore o uguale al secondo.
op1 -gt op2
Vero se il primo operando è maggiore del secondo.
op1 -ge op2
Vero se il primo operando è maggiore o uguale al secondo.
! espressione
Inverte il risultato logico dell'espressione.
espress -a espress
Vero se entrambe le espressioni danno un risultato Vero.
espress -o espress
Vero se almeno un'espressione dà un risultato Vero.
(espressione)
Vero se il risultato dell'espressione è Vero.

713.11   Comando «ulimit»

Comando Descrizione
ulimit [opzioni] [limite] 
Fornisce il controllo sulle risorse disponibili per la shell e per i processi avviati da questa, sui sistemi che permettono un tale controllo. Il valore del limite può essere un numero nell'unità specificata per la risorsa, o il valore unlimited.
Se l'indicazione dell'entità del limite viene omessa, si ottiene l'informazione del valore corrente. Quando viene specificata più di una risorsa, il nome del limite e l'unità vengono emessi prima del valore.
Il controllo pratico dei limiti impostati in questo modo dipende dal sistema operativo, che potrebbe anche ignorarne alcuni, per carenze realizzative nelle funzioni che dovrebbero attuare questi compiti.
Se il limite viene espresso, questo diventa il nuovo valore per la risorsa specificata. Se non viene espressa alcuna opzione, si assume normalmente -f. I valori, a seconda dei casi, sono espressi in multipli di 1 024 byte, o in «blocchi» da 512 byte, tranne per -t che è riferito a secondi e -n che rappresenta una quantità precisa.
Il valore restituito è zero se non vengono commessi errori.

Opzioni per l'uso del comando ulimit:

Opzione Descrizione
-H
Viene impostato il limite fisico (hard) per la data risorsa. Un limite fisico non può essere aumentato una volta che è stato impostato. Se non viene specificata questa opzione, si intende l'opzione -S in modo predefinito.
-S
Viene impostato il limite logico (soft) per la data risorsa. Un limite logico può essere aumentato fino al valore del limite fisico. Questa opzione è predefinita se non viene specificata l'opzione -H.
-a
Sono riportati tutti i limiti correnti.
-c
La grandezza massima dei file core creati, espressa in blocchi che dovrebbero essere di 512 byte.
-d
La grandezza massima del segmento dati di un processo, in multipli di 1 024 byte.
-f
La grandezza massima dei file creati dalla shell, espressa in blocchi che dovrebbero essere di 512 byte.
-m
La grandezza massima della memoria occupata, in multipli di 1 024 byte.
-s
La grandezza massima dello stack del processo, in multipli di 1 024 byte.
-t
Il massimo quantitativo di tempo di CPU in secondi.
-n
Il numero massimo di descrittori di file aperti (la maggior parte dei sistemi non permette che questo valore sia impostato, consentendo solo la sua lettura).

713.12   Altri comandi interni

Comando Descrizione
:[argomenti]
Ciò che inizia con il simbolo : non viene eseguito. Si ottiene solo l'espansione degli argomenti e l'esecuzione della ridirezione. Il valore restituito alla fine è sempre zero.
. file_script [argomenti]
Vengono letti ed eseguiti i comandi contenuti nel file indicato. Se il nome del file non fa riferimento a un percorso, questo viene cercato all'interno dei vari percorsi elencati dalla variabile PATH. Se vengono forniti degli argomenti, questi diventano i parametri posizionali dello script. Il valore restituito dallo script è: quello dell'ultimo comando eseguito al suo interno; zero (Vero) se non vengono eseguiti comandi; Falso (un valore diverso da zero) se il file non è stato trovato.
alias [nome[=valore]]...
Il comando alias permette di definire un alias, oppure di leggere il contenuto di un alias particolare, o di elencare tutti gli alias esistenti.
Se viene utilizzato senza argomenti, emette attraverso lo standard output la lista degli alias nella forma nome=valore. Se viene indicato solo il nome di un alias, ne viene emesso il nome e il contenuto. Se si utilizza la sintassi completa si crea un alias nuovo.
La coppia nome=valore deve essere scritta senza lasciare spazi prima e dopo del segno di uguaglianza (=).
Il comando alias restituisce il valore Falso quando è stato indicato un alias inesistente senza valore da assegnare, negli altri casi restituisce Vero.
bg [specificazione_del_job]
Mette sullo sfondo il job indicato, come se fosse stato avviato aggiungendo il simbolo e-commerciale (&) alla fine. Se non viene specificato il job, viene messo sullo sfondo quello corrente, dal punto di vista della shell. Se l'operazione riesce, il valore restituito è zero.
break [n]
Interrompe un ciclo for, while o until. Se viene specificato il valore numerico n, l'interruzione riguarda n livelli. Il valore n deve essere maggiore o uguale a uno. Se n è maggiore dei cicli annidati in funzione, vengono semplicemente interrotti tutti. Il valore restituito è zero purché ci sia un ciclo da interrompere.
cd [directory]
Cambia la directory corrente. Se non viene specificata la destinazione, si intende la directory contenuta nella variabile HOME (che di solito corrisponde alla directory personale dell'utente). Il funzionamento di questo comando può essere alterato dal contenuto della variabile CDPATH che può indicare una serie di percorsi di ricerca per la directory su cui ci si vuole spostare. Di norma, la variabile CDPATH è opportunamente vuota, in modo da fare riferimento semplicemente alla directory corrente.
command comando [argomento...]
Esegue un «comando» con degli argomenti eventuali. Il comando che si avvia può essere solo un comando interno oppure un programma, mentre sono escluse espressamente le funzioni.
continue [n]
Riprende, a partire dall'iterazione successiva, un ciclo for, while o until. Se viene specificato il valore numerico n, il salto riguarda n livelli. Il valore n deve essere maggiore o uguale a uno. Se n è maggiore dei cicli annidati in funzione, si fa riferimento al ciclo più esterno. Il valore restituito è zero, a meno che non ci sia alcun ciclo da riprendere.
eval [argomento...]
Esegue gli argomenti come parte di un comando unico. Restituisce il valore restituito dal comando rappresentato dagli argomenti. Se non vengono indicati argomenti, o se questi sono vuoti, restituisce Vero.
exec [ comando [argomenti]]
Se viene specificato un comando (precisamente deve essere un programma), questo viene eseguito rimpiazzando la shell, in modo da non generare un nuovo processo. Se sono stati indicati degli argomenti, questi vengono passati regolarmente al comando.
Il fatto di rimpiazzare la shell implica che, al termine dell'esecuzione del programma, non c'è più la shell. Nel caso si utilizzi exec da una finestra di terminale, questa potrebbe chiudersi semplicemente, oppure, se si tratta di una shell di login potrebbe essere riavviata la procedura di accesso.
exit [n]
Termina l'esecuzione della shell restituendo il valore n. Se viene omessa l'indicazione esplicita del valore da restituire, viene utilizzato quello dell'ultimo comando eseguito.
export nome...
Le variabili elencate vengono segnate per l'esportazione, nel senso che vengono trasferite all'ambiente dei programmi eseguiti successivamente all'interno della shell stessa.
fg [job]
Pone il job indicato in primo piano, ovvero in foreground. Se non viene specificato il job, si intende quello attuale, ovvero, l'ultimo a essere stato messo sullo sfondo (background).
getopts stringa_di_opzioni \
  \nome_di_variabile [argomenti]
Il comando interno getopts serve per facilitare la realizzazione di script in cui si devono analizzare le opzioni della riga di comando. Ogni volta che viene chiamato, getopts analizza l'argomento successivo nella riga di comando, restituendo le informazioni relative attraverso delle variabili di ambiente. Per la precisione, getopts analizza gli argomenti finali della sua stessa riga di comando (quelli che sono stati indicati nello schema sintattico come un elemento facoltativo) e in mancanza di questi utilizza il contenuto del parametro @. L'utilizzo di getopts può risultare complesso, pertanto viene descritto meglio in una sezione apposita.
hash [-r] [comando...]
Per ciascun comando indicato, viene determinato e memorizzato il percorso assoluto.
Se non viene dato alcun argomento, si ottiene l'elenco dei comandi memorizzati.
Se si usa l'opzione -r si cancellano i percorsi memorizzati.
jobs [job...]
Quello mostrato rappresenta lo schema sintattico dell'utilizzo comune di jobs, che serve a elencare i job attivi.
Se viene indicato esplicitamente un job, l'elenco risultante è ristretto alle sole informazioni su quel job.
kill [-s segnale] [pid | job]...
kill -l [numero_del_segnale]
Invia il segnale indicato al processo identificato dal numero del PID o dal job. Il segnale viene definito attraverso un nome, come per esempio KILL (per garantire la compatibilità massima conviene evitare l'uso del prefisso SIG), o un numero di segnale. Se non viene indicato il tipo di segnale da inviare, si intende TERM. Un argomento -l elenca i nomi dei segnali corrispondenti ai numeri eventualmente indicati.
typeset [nome[=valore]]
local [nome[=valore]]
Permette di dichiarare delle variabili ed eventualmente anche di attribuirgli dei valori. Se non vengono forniti nomi di variabili da creare, vengono visualizzati i nomi di quelle esistenti con i loro valori.
Il comando typeset prevede diverse opzioni per attribuire caratteristiche particolari alle variabili, ma in generale, per problemi di compatibilità, conviene usarlo senza opzioni, all'interno delle funzioni, per creare delle variabili locali. Per questa ragione, viene qui abbinato al comando local, che dovrebbe permettere di creare esclusivamente delle variabili locali all'interno delle funzioni.
pwd
Emette il percorso assoluto della directory corrente. Se viene usata l'opzione -P, i percorsi che utilizzano collegamenti simbolici vengono tradotti in percorsi reali.
Restituisce zero se non si verifica alcun errore mentre si legge il percorso della directory corrente.
read [-p prompt] variabile...
Viene letta una riga dallo standard input, assegnando la prima parola di questa riga alla prima variabile indicata come argomento, assegnando la seconda parola alla seconda variabile e così via. All'ultima variabile indicata nella riga di comando viene assegnato la parte restante della riga dello standard input che non sia stata distribuita diversamente. Per determinare la separazione in parole della riga dello standard input si utilizzano i caratteri contenuti nella variabile IFS.
L'opzione -p permette di definire un invito particolare. Questo viene visualizzato solo se l'input proviene da un terminale.
readonly [variabile...]
readonly -p
Le variabili indicate vengono marcate per la sola lettura e i valori di queste non possono essere cambiati dagli assegnamenti successivi. Se viene indicata l'opzione -p, si ottiene una lista di tutti i nomi a sola lettura.
return [n]
Termina l'esecuzione di una funzione restituendo il valore n. Se viene omessa l'indicazione di questo valore, la funzione che termina restituisce il valore restituito dall'ultimo comando eseguito al suo interno. Se il comando return viene utilizzato al di fuori di una funzione, ma sempre all'interno di uno script, termina l'esecuzione dello script stesso.
shift [n]
I parametri posizionali da n+1 in avanti sono spostati a partire dal primo in poi (il parametro zero non viene coinvolto). Se n è 0, nessun parametro viene cambiato. Se n non è indicato, il suo valore predefinito è uno. Il valore di n deve essere un numero non negativo minore o uguale al parametro # (cioè al numero di parametri posizionali esistenti). Se n è più grande del parametro #, i parametri posizionali non vengono modificati.
Restituisce Falso se n è più grande del parametro # o minore di zero; altrimenti restituisce Vero.
times
Emette i tempi di utilizzo accumulati.
trap [argomento] [segnale]
Il comando espresso nell'argomento deve essere letto ed eseguito quando la shell riceve il segnale, o i segnali indicati. Se non viene fornito l'argomento, o viene indicato un trattino (-) al suo posto, tutti i segnali specificati sono riportati al loro valore originale (i valori che avevano al momento dell'ingresso nella shell). Se l'argomento fornito corrisponde a una stringa nulla, questo segnale viene ignorato dalla shell e dai comandi che questo avvia. Se il segnale è EXIT, pari a zero, il comando contenuto nell'argomento viene eseguito all'uscita della shell.
Se viene utilizzato senza argomenti, trap emette la lista di comandi associati con ciascun numero di segnale. I segnali intercettati sono riportati al loro valore originale in un processo discendente quando questo viene creato.
type nome...
Determina le caratteristiche di uno o più comandi indicati come argomento.
Restituisce Vero se uno qualsiasi degli argomenti viene trovato, Falso se non ne viene trovato alcuno.
umask [modalità]
La maschera dei permessi per la creazione dei file dell'utente viene modificata in modo da farla coincidere con la modalità indicata. Generalmente può essere inserita la modalità soltanto in forma di numero ottale. Se la modalità viene omessa si ottiene il valore corrente della maschera.
unalias [-a] [nome_di_alias...]
Rimuove l'alias indicato dalla lista degli alias definiti. Se viene fornita l'opzione -a, sono rimosse tutte le definizioni di alias.
unset [-v] nome_variabile...
unset -f nome_funzione...
Vengono rimosse le variabili o le funzioni indicate. Se viene utilizzata l'opzione -f, si fa riferimento espressamente a funzioni; se si indica l'opzione -v ci si riferisce espressamente a variabili. Se non si indicano opzioni e ci può essere ambiguità tra i nomi, vengono rimosse le variabili.
wait [n]
Attende la conclusione del processo specificato e restituisce il suo valore di uscita. Il numero n può essere un PID o un job; se viene indicato un job, si attende la conclusione di tutti i processi nel condotto di quel job. Se n non viene indicato, si aspetta la conclusione di tutti i processi discendenti ancora attivi, restituendo il valore zero. Se n specifica un processo o un job che non esiste, viene restituito il valore Falso, altrimenti il valore restituito è lo stesso dell'ultimo processo o job per cui si è attesa la conclusione.

Appunti di informatica libera 2006.07.01 --- Copyright © 2000-2006 Daniele Giacomini -- <daniele (ad) swlibero·org>


Dovrebbe essere possibile fare riferimento a questa pagina anche con il nome shell_posix.htm

[successivo] [precedente] [inizio] [fine] [indice generale] [indice ridotto] [translators] [docinfo] [indice analitico]

Valid ISO-HTML!

CSS validator!