Laboratorio Sistemi Operativi 1: 24 Ottobre 2007

 

Esercizio 1

Scrivere uno script myand che emula il comportamento dell’operatore && (chiaramente senza utilizzarlo). Cioe’

 

myand  c1 c2 c3 … cn

 

esegue il comando  ci  se i comandi c1….ci-1 sono terminati con exit status 0. Il comando termina al primo fallimento (exit status diverso da 0) di un comando nella lista.

Esercizio 2

Scrivere uno script  concat file i j che concatena i file con nome file-i, file-i+1, . . . , file-j, scrivendo il risultato in file.

Hint: utilizzate  cat, >>  e seq (per generare una sequenza di numeri)

 

Esercizio 3

Scrivere uno script che implementa il seguente comando 

 

sos ext

 

che rimpiazza ogni occorrenza della stringa “bash” con la “shell”  nel contenuto di ogni file con estensione .ext nella directory corrente.

Generalizzare ora il comando  definendo il comando psos

 

psos stringa1 stringa2 ext

 

che rimpiazza ogni occorrenza di stringa1 con stringa2 nel contenuto di ogni file con estensione .ext nella directory corrente.

Effettuare tutti i controlli necessari per il buon funzionamento dello script.

 

Hint: Utilizzate il comando sed con l’istruzione  di sostituzione s/ / /g di sed. Attenzione all’uso del quoting nella gestione dei parametri (vedi manuale per uso sed)

Vedi sezione C.2 della Guida avanzata


Esercizio
 4

Scrivete uno script lpath che elenca i percorsi indicati nella variabile PATH, uno per riga (si ricordi che in PATH i vari percorsi sono separati da “:”).

 

Hint: usate l’operatore ${ <variabile>comando }  per lavorare sulle stringhe (vedi comando %w (%%w) che toglie la piu corta(lunga) occorrenza del pattern w dal valore di variabile.

Vedi Sezione 9.2 (manipolazione stringhe) della Guida avanzata