Strumenti Utente

Strumenti Sito


lcs:lcs06:esercitazioni:esercitazione3

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?

lcs/lcs06/esercitazioni/esercitazione3.txt · Ultima modifica: 08/02/2007 alle 13:44 (18 anni fa) da Susanna Pelagatti