Indice

Esercitazione 5

Dove si continua a sperimentare la bash

Esercizio 1: Segnali ....

Usare kill per inviare il segnale SIGUSR1 nella shell corrente ed usare trap per ridefinirlo in modo da far stampare alla shell un breve messaggio (es “Ciao Mondo!”) ogni volta che riceve un segnale SIGUSR1.

kill permette di inviare un segnale ad un processo di cui si conosce il pid. Usare ps o $$ per ottenere il pid della shell corrente . trap invece permette di registrare un comando da effettuare all'arrivo di un segnale (vedi lucidi).

Esercizio 2: modify

Realizzare uno script Bash che realizza un comando di sintassi:

modify [dir] suffix 

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

file1.suffix

file2.suffix

.... 

Esercizio 3: 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:

bash:~$ ls
primo.test primo.check zz.test zz.check
bash:~$ selectfile test
1) primo.test
2) zz.test
Scelta?

Esercizio 4: count

Realizzare uno script count che legge da standard input dei record relativi ad esami registrati, ciascun record ha formato

matricola_studente:codice_esame:voto\n

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

codice_esame n_studenti

Suggerimento: utilizzare read per leggere da standard input e gli array bash per memorizzare i vari contatori.