traccia

Transcript

traccia
Lab. di Sistemi Operativi, Gruppo I: M. Faella
Anno Acc. 2006-2007
Esame del 25 luglio 2007
Università di Napoli Federico II
Nome e Cognome:
Matricola:
1
2
/32
3
/30
tot
/38
/100
1. 32 punti
Si supponga che l'output tipico del comando ls -l sia:
-rw-------rw-r--r--rw-r--r--rw-r--r--rw-r-----
2
1
1
4
1
utente1
utente1
utente2
utente3
utente2
staff
staff
users
staff
users
4096
102
3145
4096
268
2007-02-10
2007-01-11
2007-01-16
2006-08-28
2007-04-26
14:28
02:05
01:48
19:29
10:37
doc1.pdf
doc2.pdf
rel.tex
02-U2-Zooropa-Babyface.mp3
03-U2-Zooropa-Numb.mp3
1
Si scriva un comando di shell UNIX per ciascuno dei seguenti compiti :
(a) (6 punti) Elencare soltanto i nomi dei le che sono stati modicati nel 2007.
(b) (6 punti) Elencare soltanto i nomi di tutti i le regolari che non sono leggibili dagli altri utenti.
(c) (8 punti) Contare la lunghezza complessiva di tutti i nomi dei le.
Supponendo che la directory corrente contenga esattamente i le mostrati sopra, si determini l'output dei
seguenti comandi:
(d) (6 punti)
(e) (6 punti)
ls | grep -v "[[:digit:]]" | sed 's/\.//'
ls -l | awk '$5 > 1000 { print $8 }' | sed 's/\..*/.big/'
2. 30 punti
Si consideri che in una directory ci siano dei le nominati:
XX-nome_artista-nome_album-titolo_traccia.mp3
Ovvero, il nome contiene 4 campi delimitati dal simbolo -: il primo campo XX è il numero di traccia
della canzone, il secondo campo è il nome del cantante, il terzo campo il nome dell'album da cui è tratta
la canzone e il quarto campo è il titolo della canzone. I campi non possono contenere il carattere -.
Si realizzi uno script che crei una directory per ogni cantante e, all'interno di queste, una directory per
ogni album. Inne, sposti ciascun le nella directory appropriata, rinominando il le in:
XX-titolo_traccia.mp3
3. 38 punti
Usando soltanto le system call di I/O di basso livello, si implementi un programma reverse che prende
come argomenti due nomi di le e scrive nel secondo le il contenuto del primo, rovesciando il contenuto
di ogni riga. Se il primo le non esiste, oppure se il secondo le esiste già, il programma deve terminare
con un errore.
Ad esempio, se il le pippo contiene il testo:
Sempre caro
mi fu
il comando reverse
pippo pippo2
crea il le pippo2 e vi scrive il testo:
orac erpmeS
uf im
1 Per
comando, si intende qualunque istruzione impartita al prompt della shell, che non contenga strutture di controllo, uso di
variabili, o l'operatore ;.