Reindirizzamento input output in esempi Linux/Unix
โก Riepilogo intelligente
Il reindirizzamento in Linux e Unix cambia il punto in cui un comando legge l'input o invia l'output, scambiaping la tastiera e lo schermo per file o dispositivi utilizzando operatori come il segno maggiore di, il segno minore di e l'operatore di aggiunta.

Il reindirizzamento รจ una delle caratteristiche piรน utili del Linux e la shell Unix, perchรฉ permette di decidere dove un comando legge il suo input e invia il suo output. Questa pagina spiega l'output, l'input e il reindirizzamento degli errori con esempi pratici.
Cos'รจ il reindirizzamento?
Il reindirizzamento รจ una funzionalitร di Linux che consente, durante l'esecuzione di un comando, di modificare i dispositivi di input e output standard. Il flusso di lavoro di base di qualsiasi Comando Linux La sua caratteristica principale รจ che prende un input e fornisce un output.
- Il dispositivo di input standard (stdin) รจ la tastiera.
- Il dispositivo di output standard (stdout) รจ lo schermo.
Tramite il reindirizzamento, รจ possibile modificare l'input e l'output standard sopra descritti.
Reindirizzamento dell'output
Il grafico sottostante indica l'inizio degli esempi di reindirizzamento dell'output.
Il simbolo '>' viene utilizzato per la reindirizzamento dell'output (STDOUT).
Esempio:
ls -al > listings
In questo caso, l'output del comando ls -al viene reindirizzato al file "listings" anzichรฉ essere visualizzato sullo schermo. Lo screenshot qui sotto mostra il risultato.
Nota: utilizzare il nome file corretto quando si reindirizza l'output del comando a un file. Se esiste giร un file con lo stesso nome, il comando reindirizzato ne elimina il contenuto e lo sovrascrive.
Se non si desidera sovrascrivere un file ma si vuole aggiungere altro contenuto a un file esistente, utilizzare l'operatore '>>'. Lo screenshot qui sotto mostra il contenuto aggiunto con '>>'.
ร possibile reindirizzare l'output standard non solo verso i file, ma anche verso i dispositivi.
$ cat music.mp3 > /dev/audio
Il comando cat legge il file music.mp3 e invia l'output a /dev/audio, che รจ il dispositivo audio. Se la configurazione audio sul tuo PC รจ corretta, questo comando riproduce il file musicale.mp3.
Reindirizzamento dell'input
Il grafico seguente illustra il reindirizzamento dell'input.
Il simbolo '<' viene utilizzato per il reindirizzamento dell'input (STDIN).
Esempio: Il programma mail di Linux puรฒ aiutarti a inviare email dal terminale.
ร possibile digitare il contenuto dell'e-mail utilizzando la tastiera, il dispositivo di input standard. Tuttavia, se si desidera allegare un file all'e-mail, รจ possibile utilizzare l'operatore di reindirizzamento dell'input nel formato seguente.
mail -s "Subject" to-address < Filename
Lo screenshot qui sotto mostra il comando mail che legge un file come input.
In questo modo il file viene allegato all'e-mail e inviato al destinatario.
Gli esempi precedenti erano semplici. Ora esaminiamo alcune tecniche di reindirizzamento avanzate che utilizzano i descrittori di file.
Compila il Descriptor (FD)
In Linux e Unix, tutto รจ un file. File regolari, directory e persino dispositivi sono file. Ogni file ha un numero associato chiamato descrittore di file (FD).
Il diagramma seguente mostra i flussi standard e i relativi descrittori di file.
Anche il tuo schermo ha un descrittore di file. Quando un programma viene eseguito, l'output viene inviato al descrittore di file dello schermo e tu vedi l'output del programma sul monitor. Se l'output fosse inviato al descrittore di file della stampante, l'output del programma verrebbe stampato.
Reindirizzamento degli errori
Ogni volta che si esegue un programma o un comando nel terminale, vengono sempre aperti tre file: input standard, output standard e errore standard.
Questi file sono sempre presenti quando un programma รจ in esecuzione. Come spiegato in precedenza, a ciascuno di questi file รจ associato un descrittore di file.
| Compila il | Compila il Descriptor |
|---|---|
| Ingresso standard STDIN | 0 |
| Uscita standard STDOUT | 1 |
| Errore standard STDERR | 2 |
Per impostazione predefinita, il flusso di errori viene visualizzato sullo schermo. Il reindirizzamento degli errori li indirizza a un file diverso dallo schermo.
Perchรฉ il reindirizzamento degli errori?
Il reindirizzamento degli errori รจ una delle funzionalitร piรน apprezzate di Unix e Linux.
Gli utenti frequenti di Unix sanno che molti comandi generano un'enorme quantitร di errori. Ad esempio, durante la ricerca di file, in genere si ottiene autorizzazione Errori di accesso negato, che di solito non sono utili a chi cerca un file specifico. Durante l'esecuzione di script di shell, spesso non si desidera che i messaggi di errore ingombrino l'output normale del programma.
La soluzione consiste nel reindirizzare i messaggi di errore a un file.
esempio 1
$ myprogram 2>errorsfile
Lo screenshot qui sotto mostra questo comando nel terminale.
Qui sopra, stiamo eseguendo un programma chiamato myprogram. Il descrittore di file per l'errore standard รจ 2. Utilizzando "2>", reindirizziamo l'output degli errori a un file chiamato "errorsfile". In questo modo, l'output del programma non viene sovraccaricato di errori.
esempio 2
Ecco un altro esempio che utilizza l'istruzione find.
find . -name 'my*' 2>error.log
Utilizzando il comando find, cerchiamo nella directory corrente "." un file il cui nome inizia con "my" e inviamo eventuali errori al file error.log.
Esempio 3: Prendiamo in esame un esempio piรน complesso.
Gli amministratori di server spesso elencano le directory e memorizzano sia l'output di errore che quello standard in un file, che puรฒ essere elaborato in seguito. Ecco il comando.
ls Documents ABC> dirlist 2>&1
Il diagramma sottostante mostra entrambi i flussi acquisiti in un unico file.
Qui:
- 2>&1 significa che STDERR viene reindirizzato alla stessa destinazione di STDOUT (ovvero il file dirlist).
- L'output di errore viene reindirizzato all'output standard, che a sua volta viene reindirizzato al file dirlist. Pertanto, entrambi i flussi vengono scritti nel file dirlist.
Il diagramma seguente riassume come input, output e reindirizzamento degli errori si integrano tra loro.






.png)