Esercizi finali

Ora che vi siete impratichiti con gli script, potete provare ad affrontare degli esercizi "completi" che richiedano tutte le compotenze acquisite fino ad ora.

File CSV

Un formato di file basato su file di testo utilizzato per l'importazione ed esportazione - ad esempio da fogli elettronici o database - di una tabella di dati usato molto di frequente è il comma-separated values (abbreviato in CSV). In realtà non esiste uno standard completo per questo tipo di file, ma solo una serie di raccomandazioni.
Di solito ogni riga della tabella è rappresentata da una singola linea di testo. Ciascuna di queste righe è a sua volta è suddivisa in campi - che corrispondono quindi alle singole colonne della tabella - separate da un apposito carattere separatore, di solito una ,. Ogni campo rappresenta un valore.
Il primo problema da trattare per questa definizione è cosa fare nel caso in cui un valore contenga al suo interno il carattere che separa i campi, ovvero il carattere che indica la fine di una linea. La soluzione più semplice è quela di non ammettere valori che contengano questi caratteri speciali. In questo caso, ad ogni riga della tabella corrisponde esattamente una linea di testo. Si può ovviare a questo limite ricorrendo alla codifica che segue:

Potete trovare un esempio di file di questo tipo e con questa correzione, facendo:
wget https://people.cs.dm.unipi.it/limco/2021-22/files/breweries_us.csv
e aprendo il file con il vostro editor preferito. Il file contiene un elenco di birrifici artigianali negli Stati Uniti d'America. In particolare, la prima linea vi comunica che all'interno sono riportate:
brewery_name,type,address,website,state,state_breweries
Si realizzi uno script per estrarre la lista di tutti i nomi delle birrerie da questa lista ordinati alfabeticamente.

Trovare tutti gli script

Osserviamo che tramite il comando file possiamo identificare gli script bash. Ad esempio:
$ file /usr/bin/eagle
/usr/bin/eagle: Bourne-Again shell script, ASCII text executable
Si costruisca uno script che crei un file scripts.txt che listi tutti gli script bash contenuti in /usr/bin; più nel dettaglio, ogni riga deve contenere il nome dello script e la sua dimensione in byte, separati da una virgola. Questo è un file in formato CSV, che può essere facilmente importato in Microsoft Excel o Libreoffice Calc per successive analisi. Si calcoli anche lo spazio occupato da tutti gli script, e lo si stampi (senza scriverlo nel file).