Questa è una vecchia versione del documento!
Esercitazione 4 bis
Ancora su scripting e bash.
Esercizio 1: mygzip
mygzip e' uno script bash che prende come parametro una directory ed una lista di file
bash:~$ mygzip dir file1 ... filek
applica il comando gzip
a tutti i file file1 … filek presenti nella directory dir
Esercizio 2: dirdiff
Realizzare lo script dirdiff prende tre parametri
bash:~$ dirdiff dir1 dir2 dir3
ed effettua la ``differenza fra la directory
dir1 e la directory
dir2 scrivendo i lrisultato in
dir3. In pratica copia in
dir3 ogni file di
dir1 che NON e' presente in
dir2 con lo stesso nome.
===== Esercizio 3: modify =====
Realizzare uno script Bash che realizza un comando di sintassi:
<code>
modify [dir] suffix
</code>
che cambia il nome di tutti i file in dir aggiungendo un suffisso
.suffix. Se dir non e' specificata ridenomina i
file nella directory corrente.
Infine, modify stampa tutti i file modificati lasciando fra uno e l'altro una riga vuota
<code>
file1.suffix
file2.suffix
….
</code>
===== Esercizio 4: selectfile =====
Realizzare uno script Bash che selezioni tutti i file con un certo suffisso nella directory corrente, contro lli fra questi quali hanno diritto di esecuzione settato per l'owner e presenti un menu in cui si richiede quale di questi file deve essere eseguito.
Ad esempio:
<code>
bash:~$ ls
primo.test primo.check zz.test zz.check
bash:~$ selectfile test
1) primo.test
2) zz.test
Scelta?
</code>
===== Esercizio 5: count =====
Realizzare uno script
count che legge da standard input dei record relativi ad esami registrati, ciascun record ha formato
<code>
matricola_studente:codice_esame:voto\n
</code>
lo script conta per ogni codice quanti sono gli studenti che hanno superato quell'esame e al termine dell'input (EOF) stampa sullo standard output una serie di righe
<code>
codice_esame n_studenti
</code>
Suggerimento: utilizzare
read'' per leggere da standard input e gli array bash per memorizzare i vari contatori.