−Indice
Esercitazione 3
Esercizio 1: ridefiniamo 'cd'
Ridefinire il builtin cd usando una funzione cd in modo che con 0 o 1 parametri si comporti come il builtin cd mentre con 2 parametri, ad esempio:
cd old new
sostituisca tutte le occorrenze di old nella working directory corrente con new e poi cerchi di spostarsi nel path cosi' generato (se esiste ed e' una directory).
Gestire anche le situazioni di errore. Utilizzare il costrutto case per discriminare fra il numero dei parametri forniti alla funzione (vedi esempio nella lezione 3 su bash).
Esercizio 2: icd, interactive cd
Definire la funzione icd (interactive cd) in modo che elenchi le directory presenti nella directory corrente e chieda inrterattivamente all'utente in qualse vuole spostarsi. Ad esempio:
bash:~$ icd 1) pippo/ 2) pluto/ 3) paperone/ Quale scegli? 3 bash:~/paperone$
Si usi il costrutto select per interagire con l'utente settando opportunamente la variabile di prompt.
Avanzato: estendere icd in modo che accetti come parametro il path della directory in cui effettuare la scelta.
Esercizio 3: printpath
Definire la funzione printpath che stampa una per linea tutte le directory presenti nella variabile di ambiente PATH (separatore ':') una per linea. Ad esempio
bash:~$ printpath /home/susanna/bin /usr/local/bin /usr/bin /usr/X11R6/bin /bin /usr/games /opt/gnome/bin /opt/kde3/bin /home/susanna/local/bin . bash:~$
Attenzione: il separatore ':' deve essere rimosso.
Esercizio 4: printusr
Definire una funzione printusr che stampi i nomi dei primi 10 utenti della macchina ordinati lessicograficamente (vedi file /etc/passwd) con la loro home. Ad esempio
bash:~$ printusr at:/var/spool/atjobs bin:/bin daemon:/sbin francy:/home/francy ftp:/srv/ftp games:/var/games gdm:/var/lib/gdm irc:/usr/lib/ircd ldap:/var/lib/ldap lp:/var/spool/lpd bash:~$
Chi riesce a farlo in meno linee di codice?