GNU/Linux >> Linux Esercitazione >  >> Linux

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

Uno degli argomenti più importanti e interessanti dell'amministrazione Linux è il reindirizzamento I/O. Questa funzione della riga di comando consente di reindirizzare l'input e/o l'output di comandi da e/o a file, o unire più comandi insieme utilizzando pipe per formare quella che è nota come una "conduttura di comandi ”.

Tutti i comandi che eseguiamo producono fondamentalmente due tipi di output:

  1. il risultato del comando:i dati che il programma è progettato per produrre e
  2. lo stato del programma e i messaggi di errore che informano un utente dei dettagli di esecuzione del programma.

In Linux e altri sistemi simili a Unix, ci sono tre file predefiniti nominati di seguito che sono identificati anche dalla shell usando i numeri del descrittore di file:

  1. stdin o 0 – è collegato alla tastiera, la maggior parte dei programmi legge l'input da questo file.
  2. Stdout o 1 – è allegato allo schermo e tutti i programmi inviano i loro risultati a questo file e
  3. stderr o 2 – i programmi inviano messaggi di stato/errore a questo file che è anche allegato allo schermo.

Pertanto, il reindirizzamento I/O consente di modificare la sorgente di input di un comando, nonché la posizione in cui vengono inviati i messaggi di output e di errore. E questo è reso possibile dal “<” e “>” operatori di reindirizzamento.

Come reindirizzare l'output standard su file in Linux

Puoi reindirizzare l'output standard come nell'esempio seguente, qui vogliamo memorizzare l'output del comando in alto per un'ispezione successiva:

$ top -bn 5 >top.log

Dove le bandiere:

  1. -b – abilita top da eseguire in modalità batch, in modo da poter reindirizzare l'output a un file oa un altro comando.
  2. -n – specifica il numero di iterazioni prima che il comando termini.

Puoi visualizzare il contenuto di top.log file utilizzando il comando cat come segue:

$ cat top.log

Per aggiungere l'output di un comando, usa il “>>” operatore.

Ad esempio per aggiungere l'output del comando top sopra nel top.log file specialmente all'interno di uno script (o sulla riga di comando), inserisci la riga seguente:

$ top -bn 5 >>top.log

Nota :Usando il numero del descrittore di file, il comando di reindirizzamento dell'output sopra è lo stesso di:

$ top -bn 5 1>top.log

Come reindirizzare l'errore standard su un file in Linux

Per reindirizzare l'errore standard di un comando, devi specificare in modo esplicito il numero del descrittore di file, 2 affinché la shell capisca cosa stai cercando di fare.

Ad esempio, il comando ls seguente produrrà un errore quando eseguito da un normale utente di sistema senza privilegi di root:

$ ls -l /root/

Puoi reindirizzare l'errore standard a un file come di seguito:

$ ls -l /root/ 2>ls-error.log
$ cat ls-error.log 

Per aggiungere l'errore standard, utilizzare il comando seguente:

$ ls -l /root/ 2>>ls-error.log

Come reindirizzare output/errore standard su un file

È anche possibile catturare tutto l'output di un comando (sia standard che standard error) in un unico file. Questo può essere fatto in due modi possibili specificando i numeri del descrittore di file:

1. Il primo è un metodo relativamente vecchio che funziona come segue:

$ ls -l /root/ >ls-error.log 2>&1

Il comando sopra significa che la shell invierà prima l'output del comando ls al file ls-error.log (usando >ls-error.log ), quindi scrive tutti i messaggi di errore nel descrittore di file 2 (output standard) che è stato reindirizzato al file ls-error.log (usando 2>&1 ). Il che implica che anche l'errore standard viene inviato allo stesso file dell'output standard.

2. Il secondo e diretto metodo è:

$ ls -l /root/ &>ls-error.log

Puoi anche aggiungere lo standard output e l'errore standard a un singolo file in questo modo:

$ ls -l /root/ &>>ls-error.log

Come reindirizzare l'input standard su file

La maggior parte, se non tutti, i comandi ottengono l'input dall'input standard e per impostazione predefinita l'input standard è collegato alla tastiera.

Per reindirizzare l'input standard da un file diverso dalla tastiera, usa il “<” operatore come di seguito:

$ cat <domains.list 

Come reindirizzare input/output standard su file

È possibile eseguire contemporaneamente il reindirizzamento dell'input standard e dell'output standard utilizzando il comando di ordinamento come di seguito:

$ sort <domains.list >sort.output

Come utilizzare il reindirizzamento I/O utilizzando i tubi

Per reindirizzare l'output di un comando come input di un altro, puoi utilizzare pipe, questo è un potente mezzo per creare righe di comando utili per operazioni complesse.

Ad esempio, il comando seguente elencherà i primi cinque file modificati di recente.

$ ls -lt | head -n 5 

Qui, le opzioni:

  1. -l – abilita il formato elenco lungo
  2. -t – vengono visualizzati per primi l'ordinamento per ora di modifica con i file più recenti
  3. -n – specifica il numero di righe di intestazione da mostrare

Comandi importanti per la costruzione di condotte

Qui, esamineremo brevemente due comandi importanti per la creazione di pipeline di comandi e sono:

xargs che viene utilizzato per creare ed eseguire righe di comando dallo standard input. Di seguito è riportato un esempio di pipeline che utilizza xargs , questo comando viene utilizzato per copiare un file in più directory in Linux:

$ echo /home/aaronkilik/test/ /home/aaronkilik/tmp | xargs -n 1 cp -v /home/aaronkilik/bin/sys_info.sh

E le opzioni:

  1. -n 1 – indica a xargs di utilizzare al massimo un argomento per riga di comando e di inviarlo al comando cp
  2. cp – copia il file
  3. -v – mostra lo stato di avanzamento del comando di copia.

Per ulteriori opzioni e informazioni sull'utilizzo, leggi i xargs pagina man:

$ man xargs 

Una t-shirt il comando legge dallo standard input e scrive nello standard output e nei file. Possiamo dimostrare come tee funziona come segue:

$ echo "Testing how tee command works" | tee file1 

I filtri di file o di testo sono comunemente usati con le pipe per operazioni efficaci sui file Linux, per elaborare le informazioni in modi potenti come la ristrutturazione dell'output dei comandi (questo può essere vitale per la generazione di utili report Linux), la modifica del testo nei file e molti altri amministrazione del sistema Linux compiti.

Per saperne di più su filtri e pipe Linux, leggi questo articolo Trova i 10 migliori indirizzi IP che accedono al server Apache, mostra un utile esempio di utilizzo di filtri e pipe.

In questo articolo, abbiamo spiegato i fondamenti del reindirizzamento I/O in Linux. Ricordati di condividere i tuoi pensieri tramite la sezione feedback qui sotto.


Linux
  1. Come acquisire le sessioni del terminale e l'output con il comando di script Linux

  2. Reindirizzamento input/output in Linux/Unix

  3. Come reindirizzare l'output di system() su un file?

  4. Come reindirizzare l'output del comando time su un file in Linux?

  5. In che modo la mappatura della memoria di un file ha un aumento significativo delle prestazioni rispetto alle chiamate di sistema I/O standard?

Come utilizzare il comando md5sum in Linux

Come utilizzare il comando touch in Linux

Come utilizzare il comando head di Linux

Come usare il comando diff di Linux

Spiegazione del reindirizzamento di input e output su Linux

Linux:come utilizzare un file come input e output allo stesso tempo?