Esercitazione conclusiva - SisInfLab

Transcript

Esercitazione conclusiva - SisInfLab
Fondamenti
Fondamenti di
di
Sistemi
Sistemi Operativi
Operativi
DEI
DEI--Politecnico
Politecnicodi
diBari
Bari
Linux e la shell Bash
•
Esercitazione conclusiva
G. Piscitelli - M. Ruta - A. Cinquepalmi
Testi di riferimento:
• Linux e la shell Bash
• La shell Bash
• Comandi shell Bash
http://sisinflab.poliba.it/ruta/linux/Linux e la shell Bash.pdf
http://www-ictserv.poliba.it/piscitelli/doc/lab_esercitazioni_SO_no/bash_shell.pdf
http://sisinflab.poliba.it/giannini/SO/Comandi_shell_bash.pdf
A.A. 2016-2017
1
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
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
Soluzione
• mv f? dir1/
/
• cd dir1
• mkdir dir2 ../dir2
• cp ../f* ../dir2/
home/
• cd dir2
• cp ../f* .
utente1/
dir1/
f1
file1
dir2/
dir2/
file1
f1
A.A. 2016-2017
2
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
2)
Visualizza l'elenco di tutti gli utenti del sistema (solo il nome utente)
Soluzione
•
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
Soluzione
•
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
Soluzione
•
ls -la | grep '^d'
5)
Visualizza i file regolari che sono accessibili in lettura a qualsiasi utente.
Soluzione
•
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
Soluzione
•
ls -la | sed 's/.\{10\}//'
A.A. 2016-2017
3
Fondamenti di
Sistemi Operativi
Esercizi
DEI - Politecnico di Bari
7) Si cancellino i risultati errati dopo aver eseguito il seguente comando (motivare la risposta):
• ls -l *a?b.sh
-rw-rw-r-rw-rw-r-rw-rw-r-rw-rw-r-
-
1
1
1
1
utente1
utente1
utente1
utente1
did
did
did
did
2048
2048
2048
2048
2001-05-17
2001-05-17
2001-05-17
2001-05-17
20:29
20:29
20:29
20:29
acb.sh
acb.sh.acb.shx
x.abb.shx
x.acb.sh
Soluzione
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
A.A. 2016-2017
4
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
8) Il file text contiene le seguenti parole
casa
cane
gatto
mondo
volpe
ciccio
Indicare l’output del seguente comando
• grep 'a\|[ae]$' text
Soluzione
• L’output è:
casa
cane
gatto
volpe
N.B. Prestare attenzione alle parentesi!
• grep '\(a\|[ae]\)$‘ text
Restituisce:
casa
cane
volpe
A.A. 2016-2017
5
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
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
Soluzione
• 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.
Soluzione
• 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
Soluzione
• find . -name 'a*o'
A.A. 2016-2017
10
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
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????
Soluzione
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
A.A. 2016-2017
7
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
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.
Soluzione
• 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;
Soluzione
• 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.
Soluzione
• ls ~ | grep '^[[:alpha:]]\{3\}[0-9]$'
A.A. 2016-2017
8