Reindirizzamento input output in esempi Linux/Unix
Cos'รจ il reindirizzamento?
Il reindirizzamento รจ una funzionalitร di Linux tale che quando si esegue un comando รจ possibile modificare i dispositivi di input/output standard. Il flusso di lavoro di base di any Comando Linux รจ che prende un input e fornisce un output.
- Il dispositivo di input standard (stdin) รจ la tastiera.
- Il dispositivo di output standard (stdout) รจ lo schermo.
Con il reindirizzamento, รจ possibile modificare l'input/output standard di cui sopra.
Clicchi Qui. se il video non รจ accessibile
Reindirizzamento dell'output
Migliori '>Il simbolo ' viene utilizzato per il reindirizzamento dell'output (STDOUT).
Esempio:
ls -al > listings
Qui l'output del comando ls -al viene reindirizzato al file "elenchi" anzichรฉ allo schermo.
Note:: utilizzare il nome file corretto durante il reindirizzamento dell'output del comando su un file. Se esiste un file esistente con lo stesso nome, il comando reindirizzato eliminerร il contenuto di quel file e quindi potrebbe essere sovrascritto.
Se non vuoi che un file venga sovrascritto ma vuoi aggiungere piรน contenuto a un file esistente, allora dovresti usare '>>'operatore.
Puoi reindirizzare l'output standard non solo sui file, ma anche sui 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 le configurazioni audio del tuo PC sono corrette, questo comando riprodurrร il file musicale.mp3
Reindirizzamento dell'input
Migliori 'Il simbolo ' viene utilizzato per il reindirizzamento dell'input (STDIN).
Esempio: Il programma di posta di Linux puรฒ aiutarti a inviare email dal Terminale.
Puoi digitare il contenuto dell'email usando la tastiera standard del dispositivo. Ma se vuoi allegare un file all'email puoi usare l'operatore di reindirizzamento dell'input nel seguente formato.
Mail -s "Subject" to-address < Filename
In questo modo il file verrร allegato all'e-mail e inviato al destinatario.
Gli esempi precedenti erano semplici. Diamo un'occhiata ad alcune tecniche avanzate di reindirizzamento che utilizzano File Descriptors.
Compila il Descriptor (FD)
In Linux/Unix, tutto รจ un file. File normali, directory e persino dispositivi sono file. Ad ogni File รจ associato un numero chiamato File Descripto (FD).
Lo schermo ha anche un File DescriptO. Quando un programma viene eseguito, l'output viene inviato a File Descripto dello schermo e vedrai l'output del programma sul tuo monitor. Se l'output viene inviato a File Descripto della stampante, l'output del programma verrebbe stampato.
Reindirizzamento degli errori
Ogni volta che esegui un programma/comando sul terminale, sono sempre aperti 3 file, vale a dire, input standard, output standard, errore standard.
Questi file sono sempre presenti ogni volta che viene eseguito un programma. Come spiegato prima, 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, sullo schermo viene visualizzato il flusso di errori. Il reindirizzamento degli errori indirizza gli errori a un file diverso dallo schermo.
Perchรฉ il reindirizzamento degli errori?
Il reindirizzamento degli errori รจ una delle funzionalitร molto popolari di Unix / Linux.
Gli utenti UNIX abituali penseranno che molti comandi generano enormi quantitร di errori.
- Ad esempio, durante la ricerca di file, si ottengono solitamente errori di autorizzazione negata. Questi errori solitamente non aiutano la persona che sta cercando un file in particolare.
- Durante l'esecuzione degli script di shell, spesso NON vuoi che i messaggi di errore ingombrino il normale output del programma.
La soluzione รจ reindirizzare i messaggi di errore su un file.
esempio 1
$ myprogram 2>errorsfile
Sopra stiamo eseguendo un programma chiamato myprogram.
Il descrittore di file per l'errore standard รจ 2.
Utilizzando "2>" reindirizziamo l'output dell'errore in un file denominato "errorfile"
Pertanto, l'output del programma non รจ ingombro di errori.
esempio 2
Ecco un altro esempio che utilizza l'istruzione find:
find . -name 'my*' 2>error.log
Utilizzando il comando "find", stiamo cercando nella directory "." corrente un file con "name" che inizia con "my"
Esempio 3: Vediamo un esempio piรน complesso,
Gli amministratori del server spesso elencano le directory e memorizzano sia l'errore che l'output standard in un file, che puรฒ essere elaborato in seguito. Ecco il comando.
ls Documents ABC> dirlist 2>&1
Qui,
- che scrive l'output di un file nell'input di un altro file. 2>&1 significa che STDERR reindirizza alla destinazione di STDOUT (che รจ il file dirlist)
- Stiamo reindirizzando l'output dell'errore sullo standard output che a sua volta viene reindirizzato al file dirlist. Pertanto, entrambi gli output vengono scritti nel file dirlist
Sintesi
- Ogni file in Linux ha un file corrispondente Descripto ad esso associato
- La tastiera รจ il dispositivo di input standard mentre lo schermo รจ il dispositivo di output standard
- โ>โ รจ l'operatore di reindirizzamento dell'output. ">>" aggiunge l'output a un file esistente
- โ<โ รจ l'operatore di reindirizzamento dell'input
- ">&" reindirizza l'output di un file a un altro.
- ร possibile reindirizzare l'errore utilizzando il file corrispondente Descripto 2.






.png)