Scripting --------- Questi esercizi sono derivati dagli esercizi di esame del corso di Laboratorio di Sistemi Operativi di Davoli e Montresor - Bologna. Esercizio: diffdir Scrivete uno script che prende come parametri da linea di comando il path di due directory, che si suppone siano l'una una versione aggiornata rispetto all'altra (suggerimento per fare test: copiate una directory in un'altra e fare qualche modifica alla seconda), e verifichi se sono stati modificati dei file (ad esempio, uno è più aggiornato dell'altro). Stampare su standard i nomi dei file nuovi, i file non piu' esistenti o file cambiati (considera la data dell'ultimo cambiamento) con a fianco new, deleted o changed. Esercizio: Comprimi, ma solo se ne vale la pena Scrivere uno script che prende in input da linea di comando il path di una directory, e per ogni file contenuto nella directory effettua la seguente trasformazione: se utilizzando il programma di compressione gzip sul file si ottiene un file compresso la cui dimensione è inferiore alla metà di quella del file originale, rimuove il file originale e lascia solo quello compresso. Altrimenti (dimensione superiore alla metà) lascia il file originale. Esercizio: file identici Scrivere uno script che prenda in input da linea di comando una lista di nomi di files e cerca se due file che hanno lo stesso contenuto. Produrre in stdout la lista coppie con contenuto comune. Requisiti: non utilizzate un approccio "quadratico" (cioe' per ogni file, confrontarelo con tutti gli altri). E' possibile risolvere il problema efficientemente. Utilizzate md5sum (utilizzate man per dettagli), che calcola un hash del contenuto di un file. Se due file hanno lo stesso contenuto, l'output di md5sum è uguale per entrambi; se due file hanno contenuto diverso, l'output di md5sum è con altissima probabilità diverso (ma può anche essere uguale, quindi utilizzate cmp per verificare file che hanno la stessa somma crittografica). La ricerca deve essere ricorsiva, ovvero includere anche le sottodirectory. Suggerimento utilizzate comandi come sort, uniq, cmp La lista puo' essere generata con find. Supporre che nei nomi dei file non ci siano spazi, virgolette o altri caratteri speciali per la shell.