I modi con cui si possono classificare i programmi di utilità sono molti e tutti potenzialmente validi. Nelle sezioni seguenti vengono mostrati una serie di programmi di utilità che non hanno trovato una diversa collocazione in questo documento.
Esistono molti piccoli programmi il cui nome e le cui funzionalità si confondono con i comandi interni delle shell principali. Quando ciò accade, occorre fare bene attenzione a determinare cosa si sta usando: il comando interno di shell o il programma.
La tabella (seguente) elenca i programmi a cui si accenna in questo capitolo.
Alcuni programmi si occupano di emettere del testo, più o meno formattato, attraverso lo standard output. In pratica queste informazioni vengono normalmente visualizzate, a meno che non si faccia una ridirezione.
echo [<opzioni>] [<stringa>... ]
Emette le stringe indicate come argomento, separate da uno spazio e con l'aggiunta di un carattere newline finale.
-
n
Sopprime il carattere newline finale, in modo da permettere l'emissione successiva sulla stessa riga.
-
e
Abilita l'interpretazione delle sequenze di escape descritte più avanti.
\a avvisatore acustico;
\b backspace;
\c eliminazione del carattere di newline finale;
\f
form feed o
\n
newline o
\r
carriage return o
\t
tabulazione (orizzontale) o
\v tabulazione verticale;
\\ barra inclinata rovescia;
\nnn il carattere il cui codice ottale corrisponde al numero indicato da nnn.
printf <formattazione>
[<argomento>... ]
Emette attraverso lo standard output la stringa di formattazione fornita, utilizzando gli argomenti, con le stesse regole utilizzate dalla funzione printf del linguaggio C.
\Onnn
Numero ottale della lunghezza di 1 fino a tre cifre (contenenti numeri da 0 a 7).
\xhhh
Numero esadecimale della lunghezza di 1 fino a tre cifre (contenenti cifre da 0 a f).
yes [<stringa>... ]
yes emette senza fine, attraverso lo standard output, le stringhe indicate come argomento (separate da uno spazio l'una dall'altra), seguite dal carattere newline. Se non viene indicata alcuna stringa come argomento, emette la lettera y.
Il programma continua la sua esecuzione fino a che non viene interrotto.
$
yes
y
y
y
y
y
...
Senza argomenti, yes emette una serie indefinita di lettere y seguite da newline.
---------
$
yes n
n
n
n
n
n
...
Se vengono specificate delle stringhe come argomento, queste stringhe vengono emesse ripetitivamente.
---------
$
yes | mioprog
Si inviano una serie di lettere y, seguite da newline, al programma ipotetico mioprog che probabilmente tende a fare una serie di domande alle quali si vuole rispondere sempre con una lettera y.
Alcuni programmi sono particolarmente indicati per la costruzione di espressioni e per questo motivo, il risultato della loro elaborazione si traduce essenzialmente nella restituzione di un valore (exit status).
false
false è un programma banale che restituisce
semplicemente il valore 1, corrispondente in pratica a
true
true è un programma banale che restituisce
semplicemente il valore 0, corrispondente in pratica a
test <espressione-condizionale>
Risolve (valuta) l'espressione indicata.
Il valore restituito può essere
-
b file
-
c file
-
d file
-
f file
-
h | -
L file
-
p file
-
S file
-
t [<file-descriptor>]
-
g file
-
u file
-
k file
-
r file
-
w file
-
x file
-
O file
-
G file
-
e file
-
s file
<file1>
-
nt <file2>
<file1>
-
ot <file2>
<file1>
-
et <file2>
-
z <stringa>
-
n <stringa>
<stringa1> = <stringa2>
<stringa1> != <stringa2>
<argomento1> <operando> <argomento2>
Il risultato dipende dall'operando utilizzato.
-
eq
uguale a;
-
ne
diverso da;
-
lt
minore di;
-
le
minore o uguale a;
-
gt
maggiore di;
-
ge
maggiore o uguale a;
Gli argomenti da confrontare possono essere
interi positivi, interi negativi,
o la espressione speciale
-
l <stringa>
che calcola la lunghezza della stringa stessa.
! <espressione>
<espressione1>
-
a <espressione2>
<espressione1>
-
o <espressione2>
$
test 1 -
gt 2 && echo "ok"
ok
$
test -
d /bin && echo "/bin è una directory"
/bin è una directory
expr valuta un'espressione e ne emette il risultato attraverso lo standard output. Ogni elemento dell'espressione deve essere un argomento separato.
Gli operandi possono essere numeri o stringhe a seconda del tipo di operazione che si intende applicare.
Se vengono usate le parentesi, è molto probabile che la shell utilizzata costringa a proteggerle attraverso tecniche di quoting.
Il valore restituito da expr dipende essenzialmente dal risultato dell'espressione nel modo seguente:
Le espressioni possono essere concatenate attraverso degli operatori logici.
<!>
Per comprenderne intuitivamente il significato,
occorre considerare che in questo caso, un
valore numerico maggiore di zero viene
considerato
---------
|
È simile all'operatore
&
È simile all'operatore
Gli operatori di comparazione sono i soliti che si usano in matematica:
<
minore;
<=
minore o uguale;
=
uguale;
==
identicamente uguale (di fatto equivalente alla notazione =);
!=
diverso;
>
maggiore;
>=
maggiore o uguale.Se la comparazione è corretta (
expr tenta inizialmente di considerare gli operatori da confrontare come numerici; se in questo modo fallisce l'operazione, tenta quindi di eseguire una comparazione lessicografica.
Gli operatori numerici sono i soliti che si usano in matematica:
+
addizione;
-
sottrazione;
*
moltiplicazione;
/
divisione;
%
resto o modulo.
<stringa> : <espressione-regolare>
L'operatore : viene usato per comparare una stringa con una espressione regolare. Questa espressione regolare può essere solo di tipo elementare e si considera che contenga implicitamente un accento circonflesso (^) iniziale.
L'espressione regolare può contenere una coppia di parentesi tonde protette nel modo seguente: \(...\). Se vengono usate, il risultato di questa comparazione sarà la parte di stringa che corrisponde alla parte di espressione regolare racchiusa tra queste parentesi. Se non vengono usate, il risultato è il numero di caratteri che corrispondono.
Se la comparazione fallisce e sono state usate le parentesi \( e \), il risultato è una stringa nulla. Se la comparazione fallisce e non sono state usate queste parentesi, il risultato è zero.
match <stringa> <espressione-regolare>
Questa sintassi è un modo alternativo per eseguire una comparazione di stringhe. Si comporta in modo identico all'uso dell'operatore :.
---------
substring <stringa> <posizione> <lunghezza>
Restituisce una sottostringa a partire dalla posizione indicata per una lunghezza massima stabilita. Se uno dei valori usati per indicare la posizione o la lunghezza è negativo, il risultato è la stringa nulla.
index <stringa> <set-di-caratteri>
Restituisce la prima posizione all'interno della stringa, a cui corrisponde uno dei caratteri che compone il set di caratteri.
length <stringa>
Restituisce la lunghezza della stringa.
$
export miavar=2
$
expr $miavar + 1
3
Viene creata la variabile miavar assegnandole il valore 2, quindi calcola la somma tra il suo contenuto e 1.
---------
$
expr abc : '
a\(.\)c'
b
Estrae dalla stringa la lettera centrale attraverso l'espressione regolare.
---------
$
expr index ambaraba br
3
Cerca la prima posizione all'interno della stringa ambaraba che corrisponda alla lettera b, oppure alla lettera r.
La ridirezione dei flussi di input e di output dei programmi viene svolto dalle shell. Il programma tee è molto importante in queste situazioni perché permette di copiare in un file il flusso di dati che lo attraversa.
tee [<opzioni>]
[<file>... ]
Copia lo standard input nello standard output e anche nei file indicati come argomento. Si tratta quindi di un filtro che permette di copiare i dati in transito in un file.
-
a | -
-
append
Aggiunge (append) i dati ai file di destinazione invece di sovrascriverli.
-
i | -
-
ignore-
interrupts
Ignora i segnali di interruzione.
Alcuni programmi si occupano di mostrare o modificare il contesto in cui si opera.
stty [<opzioni>]
stty [<configurazione>]
stty permette di modificare o di conoscere la configurazione del proprio terminale.
Vedere info stty oppure stty(1).
tty [<opzioni>]
tty emette attraverso lo standard output il nome del terminale con cui si è connessi.
-
s | -
-
silent | -
-
quiet
Non emette alcuna segnalazione, si limita a restituire un valore.
printenv [<opzioni>] [<variabile>... ]
printenv emette attraverso lo standard output il contenuto delle variabili indicate come argomento. Se viene usato senza argomenti, emette il contenuto di tutte.
L'uso di questo programma è utile quando la shell di cui si dispone non permette di espandere una variabile.
$
printenv PATH
Mostra il contenuto della variabile PATH.
1997.10.26 - Scritto da Daniele Giacomini daniele@calion.com (vedi copyright: Appunti Linux).