Redirezione nel terminale – Parte 1: angolari e pipe

By Jessica Lambiase

inputoutput

Quando si parla di Linux è inevitabile pensare al terminale: la vista di una semplice riga di testo che indica il percorso corrente (o l’username, uno $, un # o qualsiasi altra cosa) e quel cursore lampeggiante potrebbero spaventare, d’altra parte la vita di un utente Linux con una buona conoscenza dei comandi bash è decisamente più semplice.

Una delle cose che potrebbe far comodo è la conoscenza degli operatori nella shell, dei comuni caratteri presenti sulla tastiera che all’interno del terminale hanno un significato “speciale”: il tema che andremo ad affrontare in questa rubrica, suddivisa in tre parti, è quello della redirezione.

Prima di continuare è bene fissare un concetto: di norma si parla di standard input ed output da terminale intendendo, rispettivamente, ciò che viene inserito dall’utente tramite la tastiera e la conseguente risposta del terminale dopo la pressione del tasto INVIO.

Il terminale può anche non prendere input solo da tastiera (può farlo, ad esempio, da file) e può non restituire output soltanto su schermo – ma può farlo anche su file, o può ancora “inoltrare” l’output verso un secondo comando successivo. Se non diversamente specificato, per impostazione predefinita il terminale attende input da tastiera e restituisce output su schermo. Esiste inoltre un terzo attore, lo standard error, in cui la shell restituisce esclusivamente i messaggi d’errore.

La prima parte di questa rubrica tratterà gli operatori “angolari” ed il pipe considerando soltanto standard input e output: saranno analizzati i quattro operatori di base “”, “>>” e “|”.

Redirezione nel terminale: Parte 1 – Angolari e pipe (vi trovate qui)

Redirezione nel terminale: Parte 2 – I filtri per pipe (prossimamente)

Redirezione nel terminale: Parte 3 File descriptor, standard error ed operazioni complesse (prossimamente)

Redirezione nel terminale Linux – L’operatore <

Si tratta di un operatore di redirezione per input.

Supponiamo ad esempio di avere un file contenente dei numeri, uno per ogni riga, e di voler visualizzare a terminale tali numeri ordinati in maniera crescente. Per procedere utilizzeremo il comando “sort” (che gestisce l’ordinamento) e diremo al terminale, grazie all’operatore “<“, di non aspettare l'inserimento dei numeri da tastiera ma di prelevare i numeri da ordinare dal file “numeri_dis”.

numeri_dis

Ciò può essere ottenuto digitando a terminale il comando

sort -n < numeri_dis

Che ci restituirà quanto segue:

sort

Redirezione nel terminale Linux – Gli operatori > e >>

Questi due operatori, abbastanza simili tra loro, permettono invece al terminale di scrivere il risultato di un comando non su se stesso ma “da qualche altra parte”. Nel nostro caso, faremo redirigere l’output su un file.

Ad esempio, supponiamo di voler salvare la lista dei file contenuti in una directory in un documento di testo. Potremo utilizzare il comando ls (che effettivamente mostra questa lista a terminale) e redirigere il suo output – grazie all’operatore “>” – nel file “lista_file.txt”. Prima di procedere è bene sapere che se il file non esiste verrà creato, mentre se è già esistente verrà sovrascritto.

ls -al > lista_file

Questa volta il terminale non mostrerà nessun output perché con l’operatore > gli è stato ordinato di “dirottare” l’output verso il file specificato a destra.

ls1

infatti, andando a spulciare nel file di testo, sarà possibile trovare l’output che ci si aspettava dal comando “ls -al”.

catlistafile

L’operatore “>>” funziona in maniera analoga con la differenza che, se il file verso il quale viene rediretto l’output esiste già, questo non sarà sovrascritto. Il nuovo output sarà aggiunto in coda al file stesso.

append

Redirezione nel terminale Linux – L’operatore |

Questo operatore altresì noto come “pipe” unisce in sé le funzionalità degli operatori di input e output visti precedentemente: il | funziona letteralmente da tubo a due bocche e serve per redirigere l’output di un primo comando come input del secondo. In parole ancora più semplici, ciò che esce dal comando a sinistra del | entra nel comando alla sua destra.

Un esempio pratico: il comando cat serve a mostrare in output il contenuto di un file, mentre il comando grep serve a cercare una parola o una frase all’interno di un file e mostrare in output l’intera riga contenente la parola o frase cercata. Ecco due esempi:

pipe

Immaginate di voler “unire” in un solo comando la situazione precedente, passando l’output del comando “cat” come input del comando grep: è proprio qui che entra in gioco l’operatore pipe. Digitando infatti

cat prova | grep 'Chimera'

si otterrà un risultato combinato dei due comandi – non sarà più necessario specificare il file come parametro del comando grep in quanto esso riceverà tutto il suo contenuto dal comando cat, proprio grazie al pipe.

grep2

Tutti gli operatori visti fin ora possono essere combinati tra loro: nell’esempio che segue, infatti, andremo a cercare la riga contenente la parola “Chimera” nel file di testo prova.txt e redirigere la riga trovata in un secondo file di testo:

grep3

Per il momento è tutto, ci risentiremo alla prossima puntata!

L’articolo Redirezione nel terminale – Parte 1: angolari e pipe appare per la prima volta su Chimera Revo – News, guide e recensioni sul Mondo della tecnologia.

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.
Amazon Music
Scopri le ultime offerte per dischi ssd su Acquista su Amazon
Scopri le ultime offerte per memorie RAM DDR su Acquista su Amazon
Scopri le ultime offerte per Chromebook su Acquista su Amazon
Scopri le ultime offerte per Raspberry su Acquista su Amazon

Potrebbero interessarti anche...

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.