[Guida] Rerirect e pipeline dell’I/O su sistemi GNU/Linux
Ultimo aggiornamento:10 Aprile 2020
Il redirect dell’I/O è la possibilità offerta dalla shell di modificare, per un dato processo, dove ricevere i dati di ingresso o verso dove scrivere i dati/errori di uscita. In questa questa mini-guida parleremo anche della concatenazione dei processi tramite la pipeline. Per effettuare queste operazioni utilizzeremo degli operatori specifici.
Redirect dell’I/O dei processi
Supponiamo di lanciare un programma da terminale. Semplificando si può affermare che questo interagisce con tre file denominati rispettivamente standard input, standard output e standard error. Effettuare un redirect, significa semplicemente modificare, per un dato processo, questi riferimenti. Per capire questo concetto in maniera immediata, utilizziamo il comando echo, il cui funzionamento è piuttosto banale: stampa a video la stringa che lo segue. Se vogliamo quindi redirezionare l’output in un file, piuttosto che allo standard output, basterà utilizzare l’istruzione echo riga1 > file.txt.
Gli operatori riassumendo sono i seguenti:
- comando > file // redirect dello std output;
- comando < file // redirect dello std input;
- comando >> file // redirect dello std output ma come append al contenuto del file;
- comando 2> file // redirect dello std error;
- comando &> file // redirect dello std output e std error.
Quindi, se vogliamo inserire il contenuto di una nuova istruzione, come append allo stesso file, useremo echo riga2 >> file.txt. Procediamo ora con il redirect dell’output di errore. Ad esempio per verificare lo stato della connessione potremo effettuare una deviazione dell’errore eventualmente generato da un ping, in uno specifico file.
Per concludere, non posso non citare il comando cat che, come suggerisce il nome dello stesso, redirezionato concatenererà tutti i file che gli forniamo come argomenti, in un unico file. Utile soprattutto in tutte quelle situazioni in cui, avendo più parti di un unico file originale, dobbiamo unificarle. La sintassi sarà la seguente:
cat parte1 parte2 parte3 > file-unico
Pipeline tra processi
Funzionalità altrettanto utile è senza dubbio il pipelining. Questa operazione permette infatti di mettere in comunicazione i processi ed effettuare così una concatenazione di comandi. L’operatore che utilizzeremo è ” | “, la barra verticale detta pipe. Si dice pipeline la sequenza di due o più comandi separati dal simbolo pipe.
Per capire meglio di cosa stiamo parlando utilizzeremo lemonbar, giusto per avere un approccio visivo. Ipotizziamo di avere questo script.sh, che restituisce come output l’ora esatta, ogni secondo. Provate a copiare nel terminale dall’istruzione while in poi, per capire di cosa si tratta.
Diamo come input a lemonbar l’output dello script: per farlo basterà la seguente istruzione (per uscire dal processo va usata la combinazione CTRL C):
bash script.sh | lemonbar -p
Si tratta quindi di una funzionalità molto potente e flessibile, poiché permette di effettuare una concatenazione tra vari programmi, andando a creare una vera e propria catena di montaggio, in cui il successivo elabora i risultati del precedente.
Seguiteci sul nostro canale Telegram, sulla nostra pagina Facebook e su Google News. Nel campo qui sotto è possibile commentare e creare spunti di discussione inerenti le tematiche trattate sul blog.
Fonte: https://www.lffl.org/2020/04/guida-redirect-pipeline-linux.html
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.