Metacaratteri della shell
I metacaratteri della shell sono caratteri specifici, generalmente simboli, che hanno un significato speciale all'interno della shell. I metacaratteri supportati in bash sono elencati come segue:
- | :Invia l'output del comando a sinistra come input del comando a destra del simbolo
- & :esegue il processo in background, consentendoti di continuare a lavorare sulla riga di comando
- ; :Ti permette di elencare più comandi su una singola riga, separati da questo carattere
- () :Raggruppa i comandi e invia il loro output nello stesso posto
- < :Ottiene l'input per il comando a sinistra dal file elencato a destra di questo simbolo
- > :Invia l'output del comando a sinistra nel file denominato a destra di questo simbolo
- scheda spazio
Metacaratteri di reindirizzamento
Il reindirizzamento dei comandi è abilitato dai seguenti metacaratteri della shell:
- Reindirizzamento dello standard input (<)
- Reindirizzamento dell'output standard (>)
- Reindirizzamento dell'errore standard (2>)
- Il carattere pipe (|)
I descrittori di file
Ogni processo funziona con descrittori di file. I descrittori di file determinano dove ha origine l'input del comando e dove sono diretti l'output e i messaggi di errore. La tabella spiega i descrittori di file.
Numero del descrittore di file | Abbreviazione del descrittore di file | Definizione |
---|---|---|
0 | stdin | Input comando standard |
1 | uscita standard | Uscita comando standard |
2 | stderr | Errore di comando standard |
Reindirizzamento comandi
Per impostazione predefinita, la shell riceve o legge l'input dallo standard input, la tastiera e visualizza l'output ei messaggi di errore sullo standard output, lo schermo. Il reindirizzamento dell'input forza un comando a leggere l'input da un file anziché dalla tastiera. Il reindirizzamento dell'output invia l'output di un comando in un file invece di inviare l'output allo schermo.
Reindirizzamento dell'input standard
Meno di (< ) il metacarattere elabora un file come input standard invece di leggere l'input dalla tastiera.
# command < filename
o
# command 0< filename
Ad esempio, usa il file data.txt come input per il comando mailx.
# mailx -s test [email protected] < data.txt
Reindirizzamento dell'output standard
Il maggiore di (> ) il metacarattere indirizza l'output standard a un file invece di stampare l'output sullo schermo.
# command > filename
o
# command 1> filename
Se il file non esiste, il sistema lo crea. Quando si utilizza un singolo metacarattere maggiore di (>), il comando sovrascrive il contenuto originale del file, se il file esiste già. Quando utilizzi due caratteri maggiori di (>>), il comando aggiunge l'output al contenuto originale del file.
$ command >> filename
Errore standard di reindirizzamento
Un comando che utilizza il descrittore di file numero (2) e il segno maggiore di (>) reindirizza tutti i messaggi di errore standard al file /dev/null.
$ command 2> /dev/null
L'esempio seguente mostra lo standard output e l'errore standard reindirizzati al file data.txt.
$ ls /tmp 1> data.txt 2>&1Nota :La sintassi 2>&1 indica alla shell di reindirizzare stderr (2) allo stesso file che riceve stdout (1).
Il personaggio della pipa
Il carattere pipe reindirizza l'output standard da un comando allo standard input di un altro comando. Il primo comando scrive l'output nello standard output e il secondo comando legge lo standard output dal comando precedente come standard input.
$ command | command
Ad esempio, utilizzare l'output standard del comando who come input standard per il comando wc -l.
$ who | wc -l 35
Per visualizzare un elenco di tutte le sottodirectory che si trovano nella directory /etc, immettere il comando seguente.
$ ls -F /etc | grep "/" X11/ acct/ apache/ apache2/
Usa l'output del comando head come input per il comando 'xargs ls'.
head -10 data.txt | xargs ls