Programmare la shell in UNIX Linux e MacOS – 2 :
- redirezione dell’input/output
- comandi in pipeline
La prima parte della lezione sulla programmazione della shell in sistemi UNIX-like segui questo link
Redirezione dell’input/output su sistemi UNIX-Like
Redirezionare l’input/output consiste nell’instradarli verso un differente input/output. Questa tecnica prende il nome di redirection. Il seguente schema illustrera il processo

Per fare in modo che un file diventi l’input di un comando UNIX procedi nel seguente modo:
- scegli una cartella di lavoro e con il seguente comando crea un file di testo
touch alberi.txt
con un editor scrivi il nome di diversi alberi per esempio
Tiglio
Salice piangente
Susino
Nespolo
Cerro
Cipresso
Ginkgo biloba
Baobab
Olivo
Per ordinare il contenuto del file (input) su standard output (monitor) usa il comando:
sort < alberi.txt

Per creare un file di testo con l’output di un comando usa il comando:
ls -l > list.txt

Nota che il comando è diventato l’input del file di testo .
Per ottenere un file ordinato da un file non ordinato usa questo comando:
sort < alberi.txt > alberi_ordinato.txt

Crea un secondo file di testo e chiamalo alberi_2.txt con il seguente contenuto
Cedro del Libano
Robinia
Acero giapponese
Mimosa
Limone
Melo
Betulla
Per redigere l’output di un file su un file già esistente senza cancellarlo ma accodando il contenuto usa:
cat alberi.txt >> alberi_2.txt

Nota che il contenuto del primo file (alberi.txt) si è accodato al contenuto del secondo file (alberi_2.txt)
Reindirizzare l’output di un programma su un file
È possibile reindirizzare l’output di un programma scritto in un linguaggio come il C o Java su un file
Scriviamo il seguente programma nel linguaggio C :
#include<stdio.h>
int main(){
int i, j;
for(i=1;i<=10;i++){
printf("\n");
for(j=1;j<=10;j++)
printf("%d\t",i*j);
}
return 0;
}
Nello specifico il programma stampa la tavola pitagorica e con il seguente comando lo salveremo su un file di testo
./main > tavola_pitagorica.txt

Output di redirezione di più comandi UNIX
Per accodare l’output di un comando con un secondo comando dovrai scriverli tra parentesi graffe:
{ date +%d/%m/%Y; ls -l; } > files.txt

Comandi UNIX in pipeline
Questa tecnica (pipeline) permette di inviare il canale di standard output di un comando sul canale standard output di un altro comando, di seguito un esempio
pwd | wc -m
il comando pwd stampa la working directory , il comando wc -m conta il numero di caratteri

Per vedere l’elenco dei file contenuti in una directory, in ordine alfabetico utilizza il seguente comando
ls | sort

Programmare la shell in UNIX Linux e MacOS – 2: Redirezione e pipeline
Si possono concatenare le due tecniche precedenti come nel seguente esempio:
ls | sort > lista_file_ordinata.txt
