Lab. di Sistemi Operativi
- Esercitazione -
Comandi Shell
1
- Esercizi Comandi Unix -
2
Esercizio n° 0
0a) creare una cartella EsercitazioneLSO-1 nella
directory di lavoro
0b) creare un file testo chiamato provaFile.txt di
almeno 5 righe utilizzando touch, echo, cat e ridirezione
0c) creare unfile testo chiamato provaFile2.txt che ha
il contenuto di provaFile.txt ripetuto 4 volte
3
Esercizio n° 1
head –n nomefile (visualizza le prime n righe del file,
se non specificato nomefile legge stdin)
tail –n nomefile (visualizza le ultime n righe del file, se
non specificato nomefile legge stdin)
4
Esercizio n° 1
1a) Scrivere il comando Unix che consente la
visualizzazione la terza e la quarta riga del file
provaFile1.txt
1b) Scrivere il comando Unix che consente la
visualizzazione delle penultime 3 righe di un del file
provaFile1.txt
1c) Scrivere il comando Unix che consente la
visualizzazione della n-esima riga del file provaFile.txt
5
Esercizio n° 1
head –4 nomefile | tail -2
tail –4 nomefile | head -3
head -n nomefile | tail -1
6
/etc/passwd
Il file /etc/passwd è il database degli utenti su ogni
sistema Unix.
Ad ogni user è dedicata una riga che definisce quali
sono i suoi principali attributi.
Sui sistemi Unix meno recenti in questo file viene scritta
anche la password (criptata), su quelli più recenti viene
scritta, generalmente, in /etc/shadow, che ha maggiori
restrizioni in termini di sicurezza.
7
/etc/passwd
Le righe di /etc/passwd si presentano nella seguente
forma:
Username:Password:UserID:GroupID:Info:HomeDirector
y:Shell
8
/etc/passwd
Username: Nome dell‘ user, la login con cui può accedere al
sistema;
Password: Campo riservato alla password dell'utente. Può
essere scritta direttamente in forma criptata o esserci
semplicemente una x (la password c'è ma è scritta altrove, di
solito in /etc/shadow). Se c'è un * (asterisco) significa che
l'utente o non ha una password o la password non è valida (in
questo caso non gli è permesso di login);
UserID: ID dell‘ user;
GroupID: ID del gruppo di appartenenza;
Info: Contiene informazioni sull'utente non necessarie al
sistema (nome esteso, numero di telefono, mail ecc...);
HomeDirectory: Indica la directory della home dell'utente;
Shell: Indica la shell di default per quell'utente.
9
/etc/passwd
Un esempio:
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
[...]
diego:x:501:503::/home/diego:/bin/bash
10
Esercizio n° 2
2a) Con un opportuno comando Unix visualizzare il
contenuto del file /etc/passwd
2b) Con un opportuno comando Unix estrarre il primo
campo dal file /etc/passwd
11
Soluzione Esercizio n° 2a
cat /etc/passwd
cut [...] /etc/passwd
consente di visualizzare il contenuto del file passwd
selezionando alcuni campi
12
Soluzione Esercizio n° 2b
l’opzione –f seguito dal numero del campo da
estrarre consente di estrarre il campo indicato cut -d: -f1 /etc/passwd
il separatore si specifica con l’opzione –d (delimiter)
seguito dal simbolo del separatore nel file
13
Esercizio n° 3a
3a) Ordinare le righe del file di testo votoStudenti.txt
(anche in senso inverso):
Gianni
Bruno
Carlo
Alice
20
15
10
30
14
Soluzione Esercizio n° 3a
sort votoStudenti.txt (ordinamento alfabetico di
default)
Alice
Bruno
Carlo
Gianni
30
15
10
20
15
Soluzione Esercizio n° 3a
sort –r esempio.txt (ordinamento inverso)
Gianni
Carlo
Bruno
Alice
20
10
15
30
inverte il senso di ordinamento sort –r esempio.txt -o file_risultato.txt
ordinamento inverso con scrittura del risultato nel file _risultato.txt invece che sullo standard outuput
16
- Chiavi di ordinamento -
Tramite l'opzione -k è possibile definire una chiave di
ordinamento su una porzione della linea contenuta nel
file
Specificando più opzioni -k è possibile definire più chiavi
di ordinamento da usare in cascata.
17
- Chiavi di ordinamento -
La sintassi di una chiave di ordinamento è la seguente:
-k
numero_campo_iniziale[.indice_primo_carattere][tipo]
[,numero_campo_finale[.indice_ultimo_carattere][tipo]]
Tipo di ordinamento da applicare su tale
campo 18
Esercizio n° 3b
3b) Ordinamento numerico con chiave:
File da ordinare:
esempio.txt:
Gianni
Bruno
Carlo
Alice
20
15
10
30
Secondo
numerico campo
19
Soluzione Esercizio n° 3b
Ordinamento numerico con chiave:
chiave di ordinamento: secondo campo del file da
ordinare sort -k 2 -n esempio.txt
output
Bruno
Alice
Carlo
Gianni
15
30
10
20 Ordina numericamente in quanto il campo
scelto come chiave di ordinamento è
numerico.
20
Esercizio n° 4
Con opportuni comandi Unix modificare un file di testo
mrighe.txt rimuovendo le prime n righe (con m>n)
Dal file votiStudenti.txt selezionare gli studenti con gli
n migliori voti e gli n peggiori voti
21
Soluzione Esercizio n° 4
Supponiamo di avere un file costituito da m righe con m > n
Effettua il conteggio delle linee (per la precisione, effettua il conteggio dei caratteri di
ritorno a capo). wc -l mrighe.txt
(m righe è il valore restituito)
tail -k mrighe.txt > tmp (dove k = m – n)
mv tmp mrighe.txt
(rinomina il file tmp nel file mrighe.txt)
22
Esercizio n° 5
Realizzare una combinazione di comandi unix che, dato
un file di testo esistente elenco, crea un nuovo file
nominativo, contenente la riga di elenco che viene
lessicograficamente per seconda.
Ad esempio se il contenuto di un file elenco è il seguente:
valeria
aldo
roberta
bruno
sandro
paola
il comando deve creare il file nominativo con il seguente
contenuto:
bruno
23
Soluzione Esercizio n° 5
Soluzione:
sort elenco | head –2 | tail –1 > nominativo
ordina il contenuto del file elenco in
ordine alfabetico
scrive il risultato sul file nominativo
out
put
input
head -2
output
aldo
bruno
input
tail -1
outp
ut
aldo
bruno
paola
roberto
sandro
valeria
bruno
24
Esercizio n° 6
Realizzate una combinazione di comandi Unix per
visualizzare gli ultimi n utenti collegati.
25
Soluzione Esercizio n° 6
Soluzione:
chiave
di
ordinamento
in
base
al
quinto
campo
inverte il senso di ordinamento, producendo i
risultati a partire dall’ utente che si è collegato per
ultimo
who | sort –k 5 -r | head –3
identifica gli utente
collegati al sistema
attualmente
Visualizza
connessi
gli
ultimi
tre
utenti
26
Esercizio n° 7
Scrivere uno script shell di nome estrai che ha tre
argomenti di input. I primi due sono file che esistono. Il
terzo argomento è il nome di un file che deve essere
creato e deve essere formato dalle prime 3 righe del
primo file e dalle ultime 2 righe del secondo file. Non
devono essere usati file temporanei.
27
Soluzione Esercizio n° 7
Soluzione:
head -3 $1 > $3 (le prime tre righe del primo file vengono
scritte nel terzo file che rappresenta il terzo
argomento)
tail -2 $2 >> $3
nome
(le ultime due righe del secondo file vengono
scritte nel terzo argomento che è il
del terzo file)
scrive sul terzo file in aggiunta a ciò che è stato
già scritto
28
Scarica

Esercizi Comandi