DEI DEI-- Politecnico di dibari Linux e la shell Bash Esercitazione conclusiva G. Piscitelli - M. Ruta - A. Cinquepalmi Testi di riferimento: Linux e la shell Bash http://sisinflab.poliba.it/ruta/linux/linux e la shell Bash.pdf La shell Bash http://www-ictserv.poliba.it/piscitelli/doc/lab_esercitazioni_so_no/bash_shell.pdf Comandi shell Bash http://sisinflab.poliba.it/giannini/so/comandi_shell_bash.pdf 1
1) Si supponga che la cwd sia /home/utente1. Descrivere l albero delle directory risultante dopo che sono stati lanciati i seguenti comandi: mkdir dir1 touch file1 f1 mv f? dir1/ cd dir1 / mkdir dir2../dir2 cp../f*../dir2/ home/ cd dir2 cp../f*. utente1/ dir1/ file1 dir2/ f1 dir2/ file1 f1 2
2) Visualizza l'elenco di tutti gli utenti del sistema (solo il nome utente) sed 's/:.*/ /' /etc/passwd cut -d\: -f1 /etc/passwd 3) Visualizza l'elenco degli utenti del sistema ed accanto al nome utente le relative shell sed 's/:.*:/ /' /etc/passwd cut -d\: -f1,7 /etc/passwd 4) Visualizza l'elenco in formato esteso delle directory anche nascoste presenti sotto la directory corrente ls -la grep '^d' 5) Visualizza i file regolari che sono accessibili in lettura a qualsiasi utente. ls -la grep '^-\(r..\)\{3\} ls -la grep -E '^-(r..){3} (espressione regolare estesa) 6) Utilizzando esclusivamente ls e sed visualizza l'elenco in formato esteso dei file presenti sotto la directory corrente eliminando la colonna dei permessi ls -la sed 's/.\{10\}//' 3
7) Si cancellino i risultati errati dopo aver eseguito il seguente comando (motivare la risposta): ls -l *a?b.sh -rw-rw-r- - 1 utente1 did 2048 2001-05-17 20:29 acb.sh -rw-rw-r- - 1 utente1 did 2048 2001-05-17 20:29 acb.sh.acb.shx -rw-rw-r- - 1 utente1 did 2048 2001-05-17 20:29 x.abb.shx -rw-rw-r- - 1 utente1 did 2048 2001-05-17 20:29 x.acb.sh I risultati errati sono: -rw-rw-r- - 1 utente1 did 2048 2001-05-17 20:29 acb.sh.acb.shx -rw-rw-r- - 1 utente1 did 2048 2001-05-17 20:29 x.abb.shx Perché il comando chiede che siano visualizzati i file il cui nome presenta le seguenti caratteristiche: stringa + 'a' + carattere + '.sh' *: una qualsiasi stringa di caratteri a: il carattere a?: un solo carattere, qualsiasi.sh: la sequenza di caratteri.sh 4
8) Il file text contiene le seguenti parole casa cane gatto mondo volpe ciccio Indicare l output del seguente comando grep 'a\ [ae]$' text L output è: casa cane gatto volpe N.B. Prestare attenzione alle parentesi! grep '\(a\ [ae]\)$ text Restituisce: casa cane volpe 5
9) Si supponga di avere il file studenti.matricole contenente una serie di cognomi, nomi e numeri di matricola separati dal carattere «;». Quale effetto ha il comando: cat studenti.matricole grep '^.*;5[1-3].\{4\}$' >> ~/studenti Il comando stampa le stringhe che iniziano per una sequenza qualunque di caratteri, sono seguite dal «;» e da 51 o 52 o 53 e terminano con 4 cifre, quindi le matricole che iniziano per 51 o 52 o 53 10) Mostrare una lista di tutti i file chiamati core in tutto il file system. Non visualizzare i messaggi di errore. find / -name core 2> /dev/null 11) Trovare i file che hanno un nome che inizi con a e termini con o presenti nella directory corrente dell utente find. -name 'a*o' 10
12) Descrivere cosa produce l esecuzione di ciascun comando contenuto nel seguente script file a) cd b) mkdir dir c) echo pippo > pluto d) ln pluto./dir/pluto e) ln -s pluto./dir/pippo f) rm./dir/pippo g) more pluto h) more./dir/p???? a) Vai nella home directory b) Crea una directory di nome dir c) Crea il file pluto e scrive al suo interno la stringa pippo d) Crea un link fisico al file pluto presente nella home directory all interno della directory /dir. Il nome del link fisico è pluto e) Crea un link simbolico al file pluto presente nella home directory all interno della directory /dir. Il nome del link simbolico è pippo f) Elimina il file pippo presente in dir g) Visualizza (a pagine) il contenuto del file pluto presente nella home directory h) Visualizza (a pagine) tutti i file di 5 lettere che iniziano con la lettera p presenti nella directory dir 7
13) Dato un file di testo text.txt contenente un elenco di iscritti a un circolo sportivo, scrivere un unico comando che permette di cercare tutti gli iscritti che hanno un cognome che inizi per vocale oppure che si chiamino ROSSI. grep '^[aeiou] \ \<ROSSI$' text.txt 14) Scrivete un unico comando (pipeline) per fornire il numero di file (e directory) a cui avete accesso, contenuti nella vostra home directory; ls ~ 2>/dev/null wc -l 15) Scrivete un unico comando (pipeline) per fornire la lista dei file della home directory il cui nome è una stringa di 3 caratteri seguita da una cifra. ls ~ grep '^[[:alpha:]]\{3\}[0-9]$' 8