La redirezione Input/Output dei comandi su Linux è sicuramente una delle operazioni più semplici da concludere attraverso Bash, ma anche una delle più utili. Permette di convogliare l’output di un comando in un file, oppure il contenuto di un file in un comando, oppure ancora l’output di un comando verso un altro comando, facendoci risparmiare, in alcuni casi, veramente tanto tempo.
Redirezione output
Prendiamo per esempio il comando dmesg (Display Message). Scrivendo appunto dmesg
sul nostro terminale vedremo apparire una serie di messaggi proveniente dal buffer del Kernel. I messaggi contengono informazioni sul sistema operativo, sul Kernel utilizzato, sui dispositivi collegati e via dicendo. Provando sulla vostra macchina ad eseguire il comando, noterete che produce un output molto lungo da leggere. Se dovessimo salvare questo output in un file per visualizzarlo in seguito, oppure per inviarlo a qualcuno, non dovremmo fare altro che utilizzare il comando di redirezione dell’output identificato su Bash con il simbolo >
.
Utilizzo
[comando] > [file_di_output]
Esempio
dmesg > kernel_buffer.txt
Il comando precedente va benissimo nel caso in cui creiamo un nuovo file o sovrascriviamo un file già esistente, se invece volessimo aggiungere l’output del nostro comando ad un file già esistente, dovremmo digitare
[comando] >> [file_esistente]
Redirezione input
Nell’esempio precedente abbiamo creato il file kernel_buffer.txt, contenente appunto il buffer del Kernel. Supponiamo di avere bisogno di cercare all’interno di esso tutti i messaggi relativi alle USB, possiamo svolgere l’operazione inversa alla precedente semplicemente invertendo il segno di output, quindi redirezionando l’input attraverso il simbolo <
.
Utilizzo
[comando] < [file_in_input]
Esempio
grep usb < kernel_buffer.txt
Utilizzare pipe
A volte, oltre a redirezionare l’output di un comando in un file o l’input di un file in un comando, può essere necessario redirezionare l’output di un comando verso un altro comando. Per svolgere questa operazione ci viene in aiuto il simbolo Pipe |
.
Utilizzo
[comando] | [comando]
Esempio
Mettiamo di avere la necessità di contare file e cartelle presenti nella root del nostro sistema operativo, potremmo elencare file e cartelle con il comando ls
(di cui abbiamo già visto il funzionamento nel precedente articolo della rubrica) e successivamente inviare l’output del comando al comando wc
(Word Count).
ls -l / | wc -l