Scrivere uno script bash che prende “k>=2” file testuali in input e appende i primi “k-1” files nel file passato come ultimo argomento (k-esimo).
Scrivere uno script bash che dati 2 file di testo in input (f1 ed f2) produce il seguente menu di scelta per l'utente:
1. rimuovere i file “f1” ed “f2”
2. archiviare i file “f1” ed “f2”
3. appendere il file “f1” al file “f2”
4. esci
Implementare le 3 opzioni e testare tutti i casi. Per l'opzione 1 chiedere conferma prima della rimozione dei file; per l'opzione 2 utilizzare i comandi tar e gzip in pipeline e produrre l'archivio compresso “f1f2.tar.gz”. Non utilizzare il builtin select per implementare il menu.
Si consideri il file testuale stats.txt.gz (decomprimerlo con gunzip) che riporta alcune statistiche di esecuzione di un dato server.
Scrivere un programma bash che estrae il valore massimo e calcola il valore medio dei numeri contenuti nella colonna 17 del file fornito.
Implementare utilizzando le chiamate di sistema open read write close l'equivalente del comando Unix cat:
mycat file1 [fileN].
Scrivere un programma, utilizzando chiamate di sistema, che implementi l'equivalente del comando Unix cp. Il programma deve accettare 3 argomenti come segue:
mycp_sc filein fileout [buffersize]
L'argomento 'buffersize' e' la dimensione del buffer da utilizzare per le letture e scritture con le SC read e write (se non specificato assegnare un valore di default, es. 256bytes):
Realizzare quindi lo stesso programma, utilizzando le chiamate di libreria fread ed fwrite. Chiamiamo questa seconda versione 'mycp_std'. Confrontare le prestazioni (usando il comando time) del programma 'mycp_sc' e 'mycp_std' al variare del parametro 'buffersize' (provare un po' di casi: 1 4 8 16 32 ….. 8192). Che cosa si nota ?
Opzionale (homework) : scrivere uno script bash che lanciato da una regola del makefile esegue mycp_sc e mycp_std scrivendo i risultati in due file separati. Plottare i dati dello 'user' e 'sys' time con gnuplot.