GNU/Linux >> Linux Esercitazione >  >> Linux

Reindirizzamento input/output in Linux/Unix

Cos'è il reindirizzamento?

Il reindirizzamento è una funzionalità in Linux tale che quando si esegue un comando, è possibile modificare i dispositivi di input/output standard. Il flusso di lavoro di base di qualsiasi comando Linux è che accetta un input e fornisce un output.

Tipi di reindirizzamento

1. Sovrascrivi

  • “>” Il dispositivo di input standard (stdin) è la tastiera.
  • “<” Il dispositivo di uscita standard (stdout) è lo schermo.

2. Aggiunge

  • “>>” output standard
  • Input standard "<<"

3. Unisci

  • “p> &q” Unisce l'output dello stream p con lo stream q
  • "p <&q" Unisce l'input dallo stream p con lo stream q
Reindirizzamento output

Il '> Il simbolo ' viene utilizzato per il reindirizzamento dell'uscita (STDOUT).

Esempio:

ls -al > listings

Qui l'output del comando ls -al viene reindirizzato al file "listings" invece del tuo schermo.

Nota :“Utilizzare il nome file corretto durante il reindirizzamento dell'output del comando a un file. Se esiste un file esistente con lo stesso nome, il comando reindirizzato cancellerà il contenuto di quel file e quindi potrebbe essere sovrascritto."

— Se non vuoi che un file venga sovrascritto ma desideri aggiungere altro contenuto a un file esistente, dovresti usare ‘>> ' operatore.

— Puoi reindirizzare l'output standard, non solo ai file, ma anche ai 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. Ma se le configurazioni audio nel tuo PC sono corrette, questo comando riprodurrà il file music.mp3

Reindirizzamento input

Il '< Il simbolo ' viene utilizzato per il reindirizzamento dell'input (STDIN)

Questo allegherebbe il file con l'e-mail e verrebbe inviato al destinatario.

"News Today" è l'oggetto dell'e-mail, "[email protected]" è l'indirizzo e-mail e "NewsFlash" è il file allegato.

Gli esempi sopra erano semplici. Diamo un'occhiata ad alcune tecniche avanzate di reindirizzamento che utilizzano i descrittori di file.

Descrittori di file (FD)

In Linux/Unix, tutto è un file. File regolari, directory e persino dispositivi sono file. Ogni File ha un numero associato chiamato File Descriptor (FD).

Il tuo schermo ha anche un descrittore di file. Quando un programma viene eseguito, l'output viene inviato al descrittore di file dello schermo e sul monitor viene visualizzato l'output del programma. Se l'output viene inviato al descrittore di file della stampante, l'output del programma sarebbe stato stampato.

Reindirizzamento errore

Ogni volta che esegui un programma/comando sul terminale, 3 file sono sempre aperti, vale a dire, standard input, standard output, standard error.

Questi file sono sempre presenti ogni volta che viene eseguito un programma. Come spiegato prima, un descrittore di file è associato a ciascuno di questi file.

File Descrittore di file
Ingresso standard STDIN 0
Uscita standard STDOUT 1
Errore standard STDERR 2

Per impostazione predefinita, il flusso di errore viene visualizzato sullo schermo. Il reindirizzamento degli errori sta indirizzando gli errori a un file diverso dallo schermo.

Perché reindirizzamento di errore?

Il reindirizzamento degli errori è una delle funzionalità molto popolari di Unix/Linux.

Gli utenti frequenti di UNIX riterranno che molti comandi generano enormi quantità di errori.

  • Ad esempio, durante la ricerca di file, in genere si ottengono errori di autorizzazione negata. Questi errori di solito non aiutano la persona che cerca un determinato file.
  • Durante l'esecuzione di script di shell, spesso NON si desidera che i messaggi di errore ingombrano 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 mioprogramma.

Il descrittore di file per l'errore standard è 2.

Usando "2>" reindirizziamo l'output dell'errore in un file chiamato "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 "trova ", stiamo cercando il ". ” directory corrente per un file con “nome ” che inizia con “mio

Esempio 3

Vediamo quindi 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

Ecco,

  • che scrive l'output da 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 all'output standard che a sua volta viene reindirizzato al file dirlist. Quindi, entrambi gli output vengono scritti nel file dirlist

Riepilogo

  • Ogni file in Linux ha un descrittore di file corrispondente 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.
  • Puoi reindirizzare l'errore utilizzando il corrispondente descrittore di file 2.

Linux
  1. Impara le nozioni di base su come funziona il reindirizzamento I/O (Input/Output) di Linux

  2. Linux:comprensione delle autorizzazioni e dei tipi di file Unix?

  3. Pipe e reindirizzamento in Linux - Spiegazione!

  4. Come stampare l'output del comando Linux su un file?

  5. Unix/Linux ripristina/ripristina i file eliminati

Spiegazione:input, output e reindirizzamento degli errori in Linux

Sostituzione del processo:un modo non comune ma avanzato per il reindirizzamento di input/output in Linux

Shell Scripting Part4 – Input, Output e Reindirizzamento

Comando AWK in Linux/Unix

Linux vs Unix

Linux reindirizza il file audio all'ingresso del microfono