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).

Reindirizzamento dell'output

Esempio:

ls -al > listings

Qui l'output del comando ls -al viene reindirizzato al file "elenchi" anzichรฉ allo schermo.

Reindirizzamento dell'output

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.

Reindirizzamento dell'output

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).

Reindirizzamento dell'input

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

Reindirizzamento dell'input

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.

Reindirizzamento degli errori

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

Perchรฉ il reindirizzamento degli errori

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"

Perchรฉ il reindirizzamento degli errori

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

Perchรฉ il reindirizzamento degli errori

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.

Riassumi questo post con: