Programmare la shell in UNIX Linux e MacOS parte 2

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

Programmare la shell in UNIX: redirezione input/output
redirezione input/output

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
Programmare la shell in UNIX: output del comando sort < file di testo
output del comando sort < file di testo

Per creare un file di testo con l’output di un comando usa il comando:

ls -l > list.txt
Programmare la shell in UNIX: output del comando sort > file di testo
output del comando sort > file di testo

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
Programmare la shell in UNIX: file generato dal comando sort < alberi.txt > alberi_ordinato.txt
file generato dal 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
Programmare la shell in UNIX: output del comando cat file >> file
output del comando cat file >> file

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
Programmare la shell in UNIX: contenuto del file dopo la redirezione dell'output
contenuto del file dopo la redirezione dell’output

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
Programmare la shell in UNIX: output su file di due comandi UNIX
output su file di due comandi UNIX

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

Programmare la shell in UNIX: output della tecnica pipeline BASH
output della tecnica pipeline BASH

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

ls  | sort   
Programmare la shell in UNIX: output del comando ls | sort
output del 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 
contenuto del file lista_file_ordinata.txt
contenuto del file lista_file_ordinata.txt

Pubblicato da Carlo Contardi

Carlo Contardi, docente di informatica e sviluppatore Full Stack, condivide la sua passione per la programmazione e l’informatica attraverso il suo blog Space Coding. Offre preziosi consigli e soluzioni pratiche a chi vuole imparare a programmare o migliorare le proprie abilità. 🚀👨‍💻

Translate »