Link, redirezione, pipeline

Transcript

Link, redirezione, pipeline
Fondamenti
Fondamenti di
di
Sistemi
Sistemi Operativi
Operativi
DEI
DEI--Politecnico
Politecnicodi
diBari
Bari
Linux - La Shell Bash
•
•
•
•
•
•
I link
• Hard link e soft link
• Il comando ln
Redirezione dell’I/O
Concatenamento di comandi: la pipeline
Visualizzazione ed diting di file
Filtri e ricerche
Esercizi
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
1
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Link 1/2
Gli elementi all’interno di un file system GNU/Linux non sono in realtà memorizzati con
il loro nome, ma tramite dei numeri: gli index nodes o inode
•
Un cilindro è organizzato in i-node e data-blocks.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
2
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Link 2/2
•
Ad ogni file è associato un singolo ed unico i-node
•
Un i-node è un contenitore di metadati che memorizza la maggior parte delle
informazioni restituite da stat (numero di link, dimensione, proprietario, allocazione
sul disco, etc.) e i puntatori ai data block, in cui viene memorizzato il contenuto di un
file.
•
All’aumento delle dimensioni del file può corrispondere un aumento dei data block
allocati per il file.
•
Il data block di una directory viene detto directory block e contiene, per ogni file
contenuto nella directory, una directory entry (#i-node, filename) contenente il nome
del file e il numero di i-node ad esso associato.
•
Un riferimento ad un file è detto link.
•
Ogni file può avere un numero qualsiasi di link.
•
UNIX ha due tipi di link: hard link e soft link. Entrambi possono essere creati con il
comando ln.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
3
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Hard link 1/2
•
Un hard link è un puntatore all'i-node di un file esistente.
•
Non viene creato un nuovo file ma solo un directory-entry (inode#, nome_file) nella
directory contenente il nuovo collegamento.
•
Un hard link eredita tutte le informazioni associate all'i-node del file originale e non
c'è più modo di distinguere tra l'hard link e il file originale.
•
Le directory hanno un numero di link almeno pari a 2: un puntatore è memorizzato
nella voce corrispondente contenuta dalla directory ‘padre’; un puntatore è contenuto
nella stessa directory verso ‘.’
•
La maggior parte di implementazioni UNIX moderne non consente di creare ulteriori
hard link a directory. Questo limite viene imposto per evitare ricorsioni infinite nel
tentativo di attraversare un albero che parte da un hard link che punta alla propria
directory padre.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
4
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Hard link 2/2
Non è possibile effettuare un hard link con un file memorizzato su una partizione diversa da
quella della directory in cui lo si vuole creare.
•
Ogni volta che si crea un hard link ad un file, il link count per il file si incrementa di 1.
•
Quando il comando rm riceve come argomento un hard link, il sistema decrementa il link
count (nell’i-node del file) di 1.
•
Se il link count non è 0, il sistema rimuove solo la directory entry del file cancellato. Il
contenuto del file e altre directory entry per quel file (hard link) rimangono inalterati.
•
Se il link count è 0, il sistema rimuove la directory entry per quel file, libera l’-inode del file
e dealloca i data block che contenevano il file.
•
La cancellazione di un file non implica automaticamente che l’inode corrispondente venga
liberato: ciò avverrà unicamente se non sono presenti altri hardlink che puntanto a tale
inode.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
5
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Soft link o symbolic link
Un soft link (o symbolic link) corrisponde ad un file che contiene, all’interno dell’unico
data block ad esso associato, il percorso assoluto di un altro file. I soft link superano i
limiti degli hard link in quanto consentono di:
- creare collegamenti tra entità su filesystem diversi;
- creare link a directory.
•
Un soft link può essere utilizzato per:
- creare puntatori a file o directory lasciando sempre ben chiara la distinzione
tra il file originale e il link.
•
Ogni volta che il sistema incontra un soft link sostituisce il suo contenuto con il
percorso che lo individua
•
Quando il comando rm riceve come argomento un soft link, cancella quest'ultimo e
non il file a cui esso si riferisce.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
6
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
ln
ln: realizza i collegamenti tra file. Di default realizza un hard link.
SINTASSI HARD LINK
•
ln [opzioni] fileSorgente1 [fileSorgente2 … fileSorgenteN]
fileDestinazione
• fileSorgenteX non può essere una diretory, X:1 … N
• fileDestinazione può essere una directory.
FLAG
•
-n non crea il link se fileDestinazione esiste già
SINTASSI SOFT LINK
• ln [opzioni] directorySorgente fileDestinazione
FLAG
• -s crea un collegamento simbolico a fileSorgente o a directorySorgente con il
nome fileDestinazione.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
7
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
•
ln /home/user/file1.txt hardlinkFile1
ls –li
2622543 -rw-rw-r-- 2 annarita annarita 0 mag 4 18:04 file1.txt
2622543 -rw-rw-r-- 2 annarita annarita 0 mag 4 18:04 hardlinkFile1
–
–
–
–
–
•
•
Esempio comando ln
Il numero di i-node coincide
Il numero di link al file è 2, in quanto entrambi i file puntano allo stesso inode
La data e l’ora di creazione dell’hard link coincide con la data di creazione del file sorgente
Non occupa spazio su disco
Il file hardlinkFile1 è un file lo si evince dal – nell’ACL
ln –s /home/user/file1.txt softlinkFile1
ls –li
2622543 -rw-rw-r-- 2 annarita annarita 0 mag 4 18:04 file1.txt
417295 lrwxrwxrwx 1 annarita annarita 9 mag 5 15:47 softlinkFile1 -> file1.txt
–
–
–
–
–
Il numero dell’inode è differente
La data e l’ora di creazione differisce da quella del file sorgente
Occupa spazio su disco
Il file softlinkFile è un link lo si evince dalla lettera l nelll’ACL
La freccia indica il nome del file sorgente a cui il link punta
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
8
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Canali di comunicazione e
redirezione
I programmi dispongono di 3 canali di comunicazione standard:
0 standard input (tastiera)
1 standard output (terminale)
2 standard error (terminale)
SINTASSI
comando operatore file
• < Redirige lo standard input del comando su un file anzichè da tastiera, equivalente
a 0<
• > Redirige solo lo standard output su un file sovrascrivendone il contenuto,
equivalente a 1>,modalità truncate
• >> Redirige lo standard output su un file aggiungendo il contenuto in coda al file di
ridirezione, append mode
•
•
2> Redirige lo standard error in modalità truncate
•
2>> Redirige lo standard error su un file in modalità append
•
n> Redirige il descrittore n-esimo (n>> append mode)
•
n>&m Concatena i due canali di comunicazione associati ai descrittori di file n ed m
•
&> Redirige sia lo stdout che lo stderr nel file specificato
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
9
Fondamenti di
Sistemi Operativi
Esempio
DEI - Politecnico di Bari
•
ls -l > stdout.txt
•
Contenuto del file stdout.txt
total 16
-rw-r--r--rw-r--rw-rw-r--r--rw-rw-r--rw-r--r--
•
1
1
1
1
1
user
user
user
user
user
user
user
user
user
user
13
28
215
125
0
2010-05-31
2010-05-31
2010-05-31
2010-05-31
2010-06-01
06:36
05:56
11:55
11:48
06:22
esempio_sort_num.txt
esempio_sort.txt
esempio_uniq.txt
file_esempio.txt
stdout.txt
N.B. nella stessa linea di comando possono essere fatti più reindirizzamenti:
comando < fileInput > fileOutput 2> fileError
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
10
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Concatenamento comandi:
la pipeline (1/2)
Il simbolo di pipe (|) serve a redirigere lo standard output del comando a
sinistra della pipe nello standard input del comando a destra della pipe.
• La shell attende che tutti i comandi della pipeline siano terminati prima di restituire
un valore.
SINTASSI
[!] comando1 [| comando2]
• Se all'inizio nella pipeline c'è un punto esclamativo (!) il valore restituito
corrisponde alla negazione logica del risultato normale.
•
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
11
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Concatenamento
comandi: la pipeline (2/2)
Sulla stessa linea è possibile eseguire una lista di comandi separandoli con caratteri
speciali
SINTASSI
comando1 ; comando2
• I comandi separati da punto e virgola (;) sono eseguiti sequenzialmente (prima
comando1 e poi comando2)
SINTASSI
comando1 && comando2
• L'operatore di controllo && si comporta come l'operatore booleano AND. Il
comando1 viene eseguito sempre, il comando2 soltanto se il primo ha terminato con
successo.
SINTASSI
comando1 || comando2
• L'operatore di controllo || si comporta come l'operatore booleano OR. Il comando1
viene eseguito sempre, il comando2 solo se il primo non ha terminato con successo
oppure non si è potuto eseguire.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
12
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
echo
echo: stampa una stringa sullo standard output.
SINTASSI
echo [stringa]
ESEMPI
• echo hello world!
• echo ~
•
echo “testo” >> file_prova
G. Piscitelli - M. Ruta - A. Cinquepalmi
Mostra il percorso della home-directory dell'utente loggato
Inserisce la stringa "testo" in coda al file_prova
A.A. 2013-2014
13
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
cat
cat: (concatenate) legge ogni file argomento in sequenza e mostra sullo standard
output il contenuto, ovvero concatena file. L'operazione non genera alcun file e si
utilizza per controllare il contenuto di file testuali.
SINTASSI
cat [opzioni] file
FLAG
•
-n Numera le righe sullo stdout
ESEMPI
• cat file1
• cat file1 file2 > file3
G. Piscitelli - M. Ruta - A. Cinquepalmi
Mostra sullo standard output il contenuto di file1.
Genera file3 che è il risultato del concatenamento in
sequenza di file1 e file2
A.A. 2013-2014
14
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
file
file : visualizza il tipo di uno o più file.
SINTASSI
file file_esempio
ESEMPI
•
file esempio_uniq.txt
esempio_uniq.txt: UTF-8 Unicode text
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
15
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
less (more)
less (more): visualizza un file in modo interattivo. Apre il paginatore e formatta il
testo in pagine per facilitarne la lettura.
SINTASSI
less nomefile
•
•
more è un paginatore alla stregua di less, ma consente solo lo scorrimento delle
pagine in avanti.
N.B. I paginatori si possono scorrere con i tasti invio, spazio e frecce. Per uscire dal
paginatore si usa Q. Per chiedere l'help del paginatore si usa H.
ESEMPI
• ls -l | less
Mostra mediate il paginatore less l'output del comando precedente
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
16
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
Esercizi
1. Visualizzate il contenuto del file /etc/passwd.
2. Visualizzate l'inizio e la fine del file /etc/passwd attraverso un paginatore.
3. Determinare la tipologia dei file /etc/passwd e /bin/ls.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
17
Fondamenti di
Sistemi Operativi
sort
DEI - Politecnico di Bari
•
sort: ordina il file ottenuto concatenando i file indicati e scrive il risultato sullo
standard output. Se non è indicato alcun file, ordina lo standard input.
SINTASSI
sort [opzioni] [file1 … fileN]
ESEMPI
•
cat esempio_sort.txt
RIGA
RIGA
RIGA
RIGA
•
A
D
C
B
sort esempio_sort.txt
RIGA
RIGA
RIGA
RIGA
A
B
C
D
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
18
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
sort (flag)
•
-c Controlla se i file indicati siano già ordinati. Se non lo sono viene emessa
una segnalazione di errore e il programma mostra la prima riga che non
rispetta l'ordine
•
sort -c esempio_sort.txt
• sort: esempio_sort.txt:3: disorder: RIGA C
RIGA A OK
RIGA D OK
RIGA C ERR
RIGA B
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
19
Fondamenti di
Sistemi Operativi
sort (flag)
DEI - Politecnico di Bari
•
-n Esegue un ordinamento numerico considerando anche il segno meno e
il punto decimale
• cat esempio_sort_num.txt
1.1
100
5
11
• sort esempio_sort_num.txt
100
11
1.1
5
• sort –n esempio_sort_num.txt
1.1
5
11
100
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
20
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
sort (flag)
•
-m Fonde
insieme i file indicati che devono essere già ordinati
•
-b
Ignora gli spazi (e tabulazioni) vuoti iniziali
•
-d
Ignora tutti i caratteri che non siano lettere, numeri o spazi
•
-f
Non distingue tra lettere maiuscole e minuscole
•
-i Ignora
•
-r
•
-o file
i caratteri speciali al di fuori del set ASCII puro
Inverte l'ordine della comparazione
Invece di utilizzare lo standard output, utilizza il file
indicato per inserire il risultato dell'operazione.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
21
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
wc 1/2
wc (word count) conta e mostra righe, parole, caratteri e byte per ogni file. Di
default conta righe, parole e byte.
SINTASSI
wc [opzioni] [file]
FLAG
•
•
•
•
-l numero di linee
-w numero di parole
-m numero di caratteri
-c numero di byte
Formato risposta: [righe] [parole] [caratteri] [byte] nome_file
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
22
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
•
cat elencotel
•
roberto 48000529
•
marco 3452328
•
mario 5567843
•
luigi 674211467
wc elencotel
•
•
wc 2/2
4 8 60 elencotel
wc -wlmc elencotel
•
4 8 60 60 elencotel
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
23
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
head
head: copia le prime X linee o byte di un file sullo standard output (default X=10).
Se nessun file è specificato, copia linee dallo standard input.
SINTASSI
head [opzioni] [filename]
FLAG
•
•
•
•
-c #X Mostra i primi #X byte di un file
-c -#X Mostra i byte di un file esclusi gli ultimi #X byte
-n #X Mostra le prime #X righe di un file (equivale a -#X)
-n -#X Mostra le righe di un file escluse le ultime #X
ESEMPI
• cat elencotel
• head -1 elencotel (equivale a $ head -n 1 elencotel)
• head -n -1 elencotel
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
24
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
tail
tail copia il file sullo standard output, iniziando da un posto specificato (linee, blocchi
o caratteri dall'inizio o dalla fine del file). Se non è specificato nessun file, copia lo
standard input. Mostra le ultime righe o byte di un file, di default le prime 10 righe.
SINTASSI
tail [opzioni] [file]
FLAG
•
•
•
•
-c #X Mostra gli ultimi #X byte di un file
-c +#X Mostra gli ultimi byte di un file a partire dal byte #X
-n #X Mostra le ultime #X righe di un file (equivale a -#X)
-n +#X Mostra le ultime righe di un file a partire dalla riga #X
ESEMPI
• cat elencotel
• tail -c +3 elencotel
• tail -n 3 elencotel
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
25
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
uniq
uniq: mostra od omette le linee ripetute. Se non è specificato nessun flag visualizza tutte
le righe senza ripeterle.
SINTASSI
uniq [opzioni] [file_esempio]
ESEMPI
• cat esempio_uniq.txt
• Questa riga è presente una sola volta.
• Questa riga è presente due volte.
• Questa riga è presente due volte.
• Questa riga è presente tre volte.
• Questa riga è presente tre volte.
• Questa riga è presente tre volte.
•
uniq esempio_uniq.txt
• Questa riga è presente una sola volta.
• Questa riga è presente due volte.
• Questa riga è presente tre volte.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
26
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
-d
•
uniq (flag)
Mostra solo le linee duplicate
uniq -d esempio_uniq.txt
• Questa riga è presente due volte.
• Questa riga è presente tre volte.
•
-u
•
Mostra solo le linee uniche non duplicate
uniq -u esempio_uniq.txt
• Questa riga è presente una sola volta.
•
-c
•
Per ogni riga indica il numero di occorrenze
uniq -c esempio_uniq.txt
• 1 Questa riga è presente una sola volta.
• 2 Questa riga è presente due volte.
• 3 Questa riga è presente tre volte.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
27
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
uniq (flag)
•
-f N
Salta il confronto delle prime N parole
•
-i
Nel confronto ignora la differenza tra lettere maiuscole e minuscole
•
-s N
Salta il confronto dei primi N caratteri
•
-w N Confronta non più di N caratteri per riga
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
28
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
cut 1/2
cut Permette di estrarre sezioni di una riga di testo, delimitate da un carattere
separatore.
SINTASSI:
cut [opzioni] [file]
FLAG
•
•
•
•
-b range Estrae solo i byte indicati nel range (N, N-M, -N, N-)
-c range Estrae solo i caratteri indicati nel range (N, N-M, -N, N-)
-d separatore Indica il carattere/stringa separatore da utilizzare (anzichè TAB)
-f intervallo Indica la lista dei campi da estrarre (N, N-M, -N, N-)
ESEMPI
• cat
•
•
•
cut_file
nome cognome matricola
pippo pluto 123456
ciccio pallino 098765
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
29
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
cut -f 2 cut_file
•
cat
•
•
•
cut 2/2
cut_file_delim
nome;cognome;matricola;email;CDL
pippo;pluto;123456;[email protected];AUT
ciccio;pallino;098765;[email protected];INF
• cut -d \; -f 2-3,5 cut_file_delim
Considera ogni riga composta da più stringhe separate dal (;) e ne visualizza solo la
seconda, la terza e la quinta.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
30
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
diff - colordiff
diff Trova differenze tra due file. Questo comando risulta molto utile per confrontare i
file di configurazione. Se si sostituisce a uno dei file da confrontare il trattino (-),
questo indica che il confronto verrà eseguito con lo standard input.
SINTASSI
diff [opzioni] file1 file2
FLAG
• -b Ignora le differenze nella quantità di spazi bianchi
• -B Ignora le differenze che consistono solo in righe vuote
• -r Confrontando due directory, confronta ogni sottodirectory ricorsivamente
• --brief Riferisce solo se i file sono diversi, senza mostrarne le differenze
• --ignore-case Considera allo stesso modo maiuscole e minuscole, ignorando ogni
relativa differenza
ESEMPI
• diff --brief /etc/passwd /etc/shadow
•
•
colordiff il comando ha le stesse opzioni ed effetti di diff ma mostra un output
colorato che permette una maggiore leggibilità.
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
31
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Esercizi
Scrivere una combinazione di comandi Unix che consenta di visualizzare:
1. la terza e la quarta riga del file elenco
2. le penultime 3 righe del file elenco
3. l’ n-esima riga del file elenco
head - 4 elenco | tail -2
tail - 4 elenco | head -3
head -n elenco | tail -1
•
Conta il numero di linee contenute nel file /etc/passwd
wc - l /etc/passwd
•
Visualizza le righe del file /etc/passwd in ordine alfabetico
sort /etc/passwd
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
32
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Esercizi
Con un opportuno comando Unix visualizzare:
1. il contenuto del file /etc/passwd
2. Estrarre il primo campo dal file /etc/passwd ordinato alfabeticamente
• cat /etc/passwd
• cut –d\: -f1 /etc/passwd | sort
•
Realizzare una combinazione di comandi unix per visualizzare l’ultimo file in ordine
alfabetico presente nella directory di lavoro
• ls | sort | tail -1
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
33
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Esercizi
Con opportuni comandi Unix modificare il file di testo votoStudenti.txt formato da m
righe rimuovendo la prima riga
Gianni 20
Carlo 10
Bruno 15
Alice 30
•
•
•
wc -l votoStudenti.txt (4 righe è il valore restituito)
tail -3 votoStudenti.txt > tmp
mv tmp votoStudenti.txt (rinomina il file tmp nel file votoStudenti.txt)
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
34
Fondamenti di
Sistemi Operativi
DEI - Politecnico di Bari
•
Esercizi
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. Il contenuto di un file elenco è il seguente:
•
valeria
•
aldo
•
roberta
•
bruno
•
sandro
•
paola
sort elenco | head –2 | tail –1 > nominativo
G. Piscitelli - M. Ruta - A. Cinquepalmi
A.A. 2013-2014
35