Gestione dei Processi - SisInfLab

Transcript

Gestione dei Processi - SisInfLab
Sistemi Operativi
DEE - Politecnico di Bari
Linux e la shell Bash – Parte II
Gestione file e directory
Link
Redirezione I/O
Concatenamento comandi
Visualizzazione file
Espressioni regolari
Filtri e ricerche
Gestione processi
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
A.A. 2010-2011
Sistemi Operativi
DEE - Politecnico di Bari
Percorsi assoluti e relativi:
PWD - TOUCH
Mostra il percorso completo della directory di lavoro corrente.
SINTASSI: pwd
user@ubuntu:~/Desktop$ pwd
/home/user/Desktop
Cambia l'orario di accesso e/o modifica di ogni file specificato (di default entrambi),
aggiornandolo all'orario corrente. Se il file non esiste, ne crea uno vuoto.
SINTASSI: touch [-acm] file_esempio
-a Cambia l'orario di accesso di file_esempio
-c Non crea il file, aggiorna solo la data di ultimo accesso
-m Cambia l'orario di modifica di file_esempio
2
Linux e la shell Bash
Sistemi Operativi
CD
DEE - Politecnico di Bari
Cambia la directory corrente in quella specificata.
SINTASSI: cd [nome_directory]
Directory Attuale: /home/user/Desktop/shell_linux
cd
Se non si specifica la directory, la directory di lavoro diventerà la home-directory
dell'utente loggato. Equivalente di: cd ~
/home/user/
cd -
La directory di lavoro diventerà quella precedentemente utilizzata, questa è
memorizzata nella variabile d'ambiente OLDPWD.
/home/user/Desktop/shell_linux
cd .
La directory di lavoro resterà quella corrente.
/home/user/Desktop/shell_linux
cd ..
La directory di lavoro diventerà quella padre di quella corrente.
/home/user/Desktop
3
Linux e la shell Bash
Sistemi Operativi
LS
DEE - Politecnico di Bari
Lista il contenuto della directory corrente o di quella specificata.
SINTASSI: ls [-aFlrtu] [percorso]
user@ubuntu:~/Desktop$ ls
lirc mamas ns230 prova.txt prova.txt~ Reasoner shell_linux tlc
-F Aggiunge ai nomi dei file un carattere che ne indica il tipo (* file eseguibili, / directory,
@ per i link simbolici, | per i FIFO)
user@ubuntu:~/Desktop$ ls -F
lirc/ mamas/ ns230/ prova.txt prova.txt~ Reasoner@ shell_linux/ tlc/
-r Inverte l'ordinamento alfabetico
-t Ordina i file per data di ultima modifica
-u Ordina i file per data di ultimo accesso
-1 Mostra l'elenco in un unica colonna.
-a Include nell'elenco anche i file che iniziano con . (punto), cioè file e directory nascoste
4
Linux e la shell Bash
Sistemi Operativi
LS
DEE - Politecnico di Bari
-l
Mostra informazioni dettagliate sui file:
[Access Control List] [numero di link al file] [utente]
[gruppo][dimensione in byte] [ultimo accesso] [nome file]
user@ubuntu:~/Desktop$ ls -l
total 24
drwxr-xr-x 6 user user 4096 2010-05-20 03:25 lirc
drwxr-xr-x 6 user user 4096 2010-04-19 13:06 mamas
drwxr-xr-x 2 user user 4096 2010-04-19 10:47 ns230
-rw-r--r-- 1 user user
-rw-r--r-- 1 user user
636 2010-04-26 06:22 prova.txt
0 2010-04-26 06:22 prova.txt~
lrwxrwxrwx 1 user user
48 2010-04-21 17:11 Reasoner ->
/home/user/ns2/ns-allinone-2.30/ns-2.30/reasoner
drwxr-xr-x 2 user user 4096 2010-05-31 13:02 shell_linux
drwxr-xr-x 5 user user 4096 2010-04-21 08:13 tlc
5
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
MKDIR - RMDIR
Crea una nuova directory.
SINTASSI: mkdir [-m permessi] [percorso] directory
- v Verbose Mode: mostra sullo standard output le operazioni eseguite
user@ubuntu:~/Desktop$ mkdir prova -v
mkdir: created directory `prova'
Rimuove le directory specificate purché vuote.
SINTASSI rmdir [--ignore-fail-on-non-empty] directory_1 [directory_n]
--ignore-fail-on-non-empty
Non notifica l'errore in caso di fallimento.
-v
Verbose mode.
6
Linux e la shell Bash
Sistemi Operativi
CP - RM
DEE - Politecnico di Bari
Copia i file/file-directory da un percorso di partenza ad uno di destinazione.
SINTASSI: cp [-fipRv] percorso_partenza percorso_destinazione
-f Forza la sovrascrittura di eventuali file di destinazione esistenti
-i In caso di file di destinazione esistenti richiede conferma interattivamente
Il percorso di destinazione può comprendere anche il nuovo nome del file/file-directory, in quest'ultimo
caso si effettuerà contemporaneamente la copia e la rinomina del file/file-directory di partenza.
Rimuove file/file-directory.
SINTASSI: rm [-filRv] percorso
-R Rimuove file e directory ricorsivamente, cioè proseguendo la rimozione delle eventuali
subdirectory
user@ubuntu:~/Desktop$ rm prova
rm: cannot remove `prova': Is a directory --> ERRORE
7
Linux e la shell Bash
Q2
Sistemi Operativi
DEE - Politecnico di Bari
MV
Sposta i file o directory da un da un percorso di partenza ad uno di destinazione.
SINTASSI: mv [-fipRv] percorso_partenza percorso_destinazione
m v file1 file2
Rinomina file1 in file2. Se quest'ultimo esiste viene
sovrascritto da file1
m v file1 directoryA
Sposta file1 dentro directoryA
m v directoryA directoryB Sposta directoryA in directoryB se quest'ultima esiste già,
viceversa rinomina directoryA in directoryB
m v directoryA file1
Operazione non consentita.
Q3
8
Linux e la shell Bash
Sistemi Operativi
FILE
DEE - Politecnico di Bari
Determina il tipo di uno o più file.
SINTASSI: file [-k] file_esempio
user@ubuntu:~/Desktop/shell_linux$ file esempio_uniq.txt
esempio_uniq.txt:
UTF-8 Unicode text
user@ubuntu:~/Desktop/shell_linux$ file ./*
./esempio_sort_num.txt:
ASCII text
./esempio_sort.txt:
ASCII text
./esempio_uniq.txt:
UTF-8 Unicode text
./file_esempio.txt:
ASCII text
9
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
Link: LN
Realizza i collegamenti tra file. Di default realizza un hard link.
SINTASSI:
ln [-sn] file_sorgente file_destinazione
ln [-sn] directory_sorgente file_destinazione
-n
Non crea il link se file_destinazione esiste già
-s
Crea un collegamento simbolico a file_sorgente o a directory_sorgente con il nome
file_destinazione.
Un hard link è un puntatore all'inode di un file esistente, non viene creato un nuovo file ma solo un
directory-entry (inode#, nome_file) nella directory contenente il nuovo collegamento. I due riferimenti
sono totalmente equivalenti perché puntano allo stesso inode. Quando si crea un hard link, il link-count
del file viene incrementato di 1, quindi il file esiste con nomi diversi.
Un soft link è un collegamento che può riferirsi sia a file che a directory. Viene creato un nuovo file di
testo che contiene semplicemente un percorso. Ogni volta che il sistema incontra un soft link sostituisce
il suo contenuto con il percorso che lo individua. Quando viene rimosso un soft link, si elimina solo il file
speciale e non il file a cui esso si riferisce. I due file (speciale e sorgente) hanno numero di inode
(inode#) differente.
10
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
REDIREZIONE I/O
Descrittori di file per l'input e l'output:
0 standard input
1 standard output
2 standard error
n ciascun processo ha a disposizione 1024 descrittori di file
Operatori di ridirezione:
<
Redirige lo standard input su un file qualunque file, equivalente a 0<
>
Redirige solo lo standard output su un file sovrascrivendone il
contenuto, equivalente a 1>
2>
Redirige solo lo standard error
>>
Redirige lo standard output su un file aggiungendo il contenuto in coda al file di
ridirezione, append mode
2>>
Redirige lo standard error su un file in append mode
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
11
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
REDIREZIONE I/O - Esempio
user@ubuntu:~/Desktop/shell_linux$ ls -l > stdout.txt
stdout.txt
total 16
-rw-r--r-- 1 user user
13 2010-05-31 06:36 esempio_sort_num.txt
-rw-r--rw- 1 user user
28 2010-05-31 05:56 esempio_sort.txt
-rw-r--r-- 1 user user 215 2010-05-31 11:55 esempio_uniq.txt
-rw-rw-r-- 1 user user 125 2010-05-31 11:48 file_esempio.txt
-rw-r--r-- 1 user user
0 2010-06-01 06:22 stdout.txt
Q1
12
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
CONCATENAMENTO COMANDI
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.
Se all'inizio nella pipeline c'è un punto esclamativo (!) il valore restituito corrisponde alla negazione
logica del risultato normale.
La shell attende che tutti i comandi della pipeline siano terminati prima di restituire un valore.
SINTASSI: [!] comando1 [| comando2]
I comandi separati da punto e virgola (;) sono eseguiti sequenzialmente.
SINTASSI: comando1 ; comando2
L'operatore di controllo && si comporta come l'operatore booleano AND. Viene eseguito il comando a
destra solo se il primo ha terminato con successo.
SINTASSI: comando1 && comando2
L'operatore di controllo || si comporta come l'operatore booleano OR. Viene eseguito il comando a
destra solo se il primo non ha terminato con successo oppure non si è potuto eseguire.
SINTASSI: comando1 || comando2
13
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
ECHO - CAT
Mostra una stringa sullo standard output.
SINTASSI: echo [stringa]
echo ~
Mostra il percorso della home-directory dell'utente
loggato
echo “testo” >> file_prova
Inserisce la stringa parola_esempio in coda al file_prova
Mostra sullo standard output il contenuto di uno o più file specificati.
SINTASSI: cat [file]
cat file1
Mostra sullo standard output il contenuto di file1.
cat file1 file2 > file3
Genera file3 che è il risultato del concatenamento
in sequenza di file1 e file2
14
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
Visualizzazione File: MORE - LESS
Formatta il testo in pagine per facilitarne la lettura a video. Permetto solo uno
scorrimento delle pagine in avanti.
SINTASSI: more [file]
Formatta il testo in pagine per facilitarne la lettura a video.
SINTASSI: less [file]
Rispetto a “more” permette una completa navigazione tra pagine e non richiede
la lettura dell'intero documento prima dell'avvio.
ls -l | less
15
Mostra mediate il paginatore less l'output del comando precedente
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
Filtri e ricerche: SORT
Ordina o fonde insieme il contenuto dei file
SINTASSI: sort [-cmbdfinr] [-o file] [file1 file2]
user@ubuntu:~/Desktop/shell linux$ cat esempio_sort.txt
RIGA A
RIGA D
RIGA C
RIGA B
user@ubuntu:~/Desktop/shell linux$ sort esempio_sort.txt
RIGA A
RIGA B
RIGA C
RIGA D
16
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
-c
SORT - flag
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
user@ubuntu:~/Desktop/shell linux$ sort -c esempio_sort.txt
sort: esempio_sort.txt:3: disorder: RIGA C
RIGA A OK
RIGA D OK
RIGA C ERR
RIGA B
17
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
SORT - flag
-n Esegue un ordinamento numerico considerando anche il segno meno e il
punto decimale
Non ordinati
Ordinati in
base al testo
Ordinamento
numerico
18
user@ubuntu:~/Desktop/shell linux$ cat esempio_sort_num.txt
1.1
100
5
11
user@ubuntu:~/Desktop/shell linux$ sort esempio_sort_num.txt
100
11
1.1
5
user@ubuntu:~/Desktop/shell linux$ sort -n esempio_sort_num.txt
1.1
5
11
100
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
SORT – flag
-m
Fonde insieme i file indicati che devono essere già ordinati
-b
Ignora gli spazi vuoti iniziali
-d
Ignora tutti i caratteri che non siano lettere, numeri o spazi
-f
Non distingue tra lettere maiuscole e minuscole
-i
Ignora i caratteri speciali al di fuori del set ASCII puro
-r
Inverte l'ordine della comparazione
-o file
Invece di utilizzare lo standard output, utilizza il file indicato per
inserire il risultato dell'operazione.
Q4
19
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
GREP - Global Regular Expression Print
Mostra le linee che corrispondono al modello ricercato. Si possono specificare
uno o più file oppure è possibile usare lo standard input
SINTASSI: grep [-GEFecnvlLi] modello [file_1 file_2]
ESPRESSIONI REGOLARI
1) Un qualsiasi carattere è già un'espressione regolare (es. caratteri speciali)
2) Un carattere speciale può essere usato come carattere regolare
anticipandolo con backslash (\) (es. * viene considerato asterisco con \*)
3) L'espressione regolare va racchiusa tra apici (es. grep 'expr').
20
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
Regole sintattiche – Classi di caratteri
[:upper:]
lettere maiuscole
[:alpha:]
lettere alfabetiche
[:lower:]
[:alnum:]
lettere minuscole
caratteri alfanumerici
[:digit:]
cifre numeriche
[:punct:] Caratteri di punteggiatura
[:space:] Caratteri definiti come «spazi bianchi»
[:blank:] Comprende solo <space> e <tab>
21
Linux e la shell Bash
Sistemi Operativi
Regole sintattiche
DEE - Politecnico di Bari
. (punto)
carattere qualsiasi
[xwyz]
Set di caratteri qualsiasi all'interno delle parentesi quadre, i
caratteri sono in OR tra di loro
[a-f]
Un carattere qualsiasi tra a ed f, estremi inclusi
[^a-f]
Tutti i caratteri tranne quelli specificati
^[a-f]
Cerca il modello specificato all'inizio di ogni riga
[a-f]$
Cerca il modello specificato alla fine di ogni riga
\<[a-f]
Cerca il modello specificato all'inizio di ogni parola
[a-f]\>
Cerca il modello specificato alla fine di ogni parola
y{n,m}
Ripetizione del carattere da n a m volte. n ed m possono anche
non essere definiti
y*
Ripetizione del carattere da 0 a più volte (Eq. a y{0,})
y?
Al massimo una ripetizione (Eq. a y{0,1})
y+
Almeno una ripetizione (Eq. a y{1,})
22
Linux e la shell Bash
[^a-f] è diverso
da ^[a-f]
Sistemi Operativi
GREP – flag
DEE - Politecnico di Bari
-G Utilizza l'espressione regolare elementare (default)
-E Utilizza l'espressione regolare estesa. Aggiunge ulteriori metacaratteri alla
serie di base
-F Utilizza un modello fatto di stringhe fisse
-e Specifica il modello di ricerca
-c Mostra il numero di righe in cui è presente il modello
-n Aggiunge ad ogni riga contenente il modello il numero di tale riga nel file
-v Selezione inversa: mostra tutte le righe tranne quelle contenenti il modello
-l
Mostra il percorso dei file in cui è presente il modello
-L Selezione inversa: mostra il percorso di tutti i file in cui non è presente il
modello
-i
23
Non distingue tra caratteri maiuscoli e minuscoli di modello
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
GREP - Esempi
Mostra tutte le righe di file_esempio
grep '.*' file_esempio
15 fifteen
14 fourteen
13 thirteen
12 twelve
11 eleven
10 ten
9 nine
8 eight
7 seven
6 six
5 five
4 four
3 three
2 two
1) grep '[24]' file_esempio.txt
14 fourteen
12 twelve
4 four
2 two
Mostra tutte le righe di file_esempio contenenti i caratteri 2 oppure 4,
indipendentemente dalla loro collocazione nella stringa.
2) grep 'ee.' file_esempio.txt
grep 'e\{2\}.' file_esempio.txt
grep -E 'e{2}.' file esempio.txt
15 fifteen
14 fourteen
13 thirteen
Mostra le righe che contengono due “e” di seguito seguite da un carattere
qualsiasi.
1 one
24
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
Mostra tutte le righe di file_esempio
grep '.*' file_esempio
15 fifteen
14 fourteen
13 thirteen
12 twelve
11 eleven
10 ten
9 nine
8 eight
7 seven
6 six
5 five
4 four
3 three
2 two
GREP - Esempi
3) grep '^1.*e$' file_esempio.txt
12 twelve
1 one
Mostra le righe che:
^1
e$
.*
Iniziano con il carattere “1”
Terminano con il carattere “e”
Presentano al loro interno zero o più caratteri
4) grep '\<f.*n\>' esempio_grep.txt
15 fifteen
14 fourteen
Mostra le righe contenenti parole che:
\<f
n\>
.*
Iniziano con il carattere “f”
Terminano con il carattere “e”
Presentano al loro interno zero o più caratteri
1 one
25
Linux e la shell Bash
Q5
Q6
Sistemi Operativi
HEAD
DEE - Politecnico di Bari
Mostra le prime righe o byte di un file, di default le prime 10 righe.
SINTASSI: head [-cn] [file]
-c X
Mostra i primi X byte di un file
-c -X
Mostra i byte di un file esclusi gli ultimi X byte
user@ubuntu:~/Desktop/shell linux$ head -c 6 file_esempio.txt
1 byte per
carattere
15 fif
-n X
Mostra le prime X righe di un file (equaivale a -X)
-n -X
Mostra le righe di un file escluse le ultime X
user@ubuntu:~/Desktop/shell linux$ head -n 3 file_esempio.txt
15 fifteen
Q7
Q8
14 fourteen
13 thirteen
26
Linux e la shell Bash
Sistemi Operativi
TAIL
DEE - Politecnico di Bari
Mostra le ultime righe o byte di un file, di default le prime 10 righe.
SINTASSI: tail [-cn] [file]
-c X
Mostra gli ultimi X byte di un file
-c +X
Mostra gli ultimi byte di un file a partire dal byte X
user@ubuntu:~/Desktop/shell linux$ tail -c 3 file_esempio.txt
L’ultimo byte
è EOF
ne
-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
user@ubuntu:~/Desktop/shell linux$ tail -n 3 file_esempio.txt
3 three
2 two
Q9
1 one
27
Linux e la shell Bash
Q11
Q12
Sistemi Operativi
DEE - Politecnico di Bari
UNIQ
Mostra od omette le linee ripetute. Se non è specificato nessun flag visualizza
tutte le righe senza ripeterle.
SINTASSI: uniq [-cdfisuw] [file_esempio]
user@ubuntu:~/Desktop/shell linux$ 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.
user@ubuntu:~/Desktop/shell linux$ uniq esempio_uniq.txt
Questa riga è presente una sola volta.
Questa riga è presente due volte.
Questa riga è presente tre volte.
28
Linux e la shell Bash
Sistemi Operativi
UNIQ - flag
DEE - Politecnico di Bari
-d Mostra solo le linee duplicate
user@ubuntu:~/Desktop/shell linux$ uniq -d esempio_uniq.txt
Questa riga è presente due volte.
Questa riga è presente tre volte.
-u Mostra solo le linee uniche non duplicate
user@ubuntu:~/Desktop/shell linux$ uniq -u esempio_uniq.txt
Questa riga è presente una sola volta.
-c
Per ogni riga indica il numero di occorrenze
user@ubuntu:~/Desktop/shell linux$ uniq -c esempio_uniq.txt
1 Questa riga è presente una sola volta.
2 Questa riga è presente due volte.
3 Questa riga è presente tre volte.
29
Linux e la shell Bash
Sistemi Operativi
DEE - 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.
30
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
WC – Word Count
Conta e mostra righe, parole, caratteri e byte per ogni file. Di default conta
righe, parole e byte.
SINTASSI: wc [-cmlw] [file_esempio]
user@ubuntu:~/Desktop/shell linux$ 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.
user@ubuntu:~/Desktop/shell linux$ wc -w -l -m -c esempio_uniq.txt
6 37 209 215 esempio_uniq.txt
Formato risposta: [righe] [parole] [caratteri] [byte] nome_file
31
Linux e la shell Bash
Q10
Sistemi Operativi
DEE - Politecnico di Bari
FIND
Cerca dei file nella directory specificata e relative subdirectory.
SINTASSI: find [-HLP] [percorso] [-name 'modello'] [-user utente_1]
[-group gruppo_a] [-perm +-permessi] [-max(min)depth X]
[-mount] [-[mac]time n] [-[mac]min n] [-[nac]ewer file]
[-empty] [-links n] [-inum n] [-size n[bckMG]]
-name modello
Restituisce i file aventi nel nome la stringa modello.
-iname modello
Come -name ma non distingue maiuscole e minuscole in modello.
-user utente_1
Cerca i file in percorso aventi come utente proprietario utente_1
-group gruppo_a
Cerca i file in percorso aventi come gruppo proprietario gruppo_a
-maxdepth X
Prosegue la ricerca massimo fino al livello X, con X intero non negativo
-mindepth X
Prosegue la ricerca a partire dal livello X
-[mac]time n
Trova i file o directory la cui data di modifica (mtime), accesso (atime) o
creazione (ctime) corrisponde a n giorni fa
-[mac]min n
Come l'opzione precedente ma n corrisponde a minuti
-empty
Solo file e directory non vuoti
-size n[bckMG]
File che usano al massimo n unità di spazio
32
Linux e la shell Bash
Sistemi Operativi
FIND - flag
DEE - Politecnico di Bari
(644) -rw-r--r--
esempio_sort_num.txt
(646) -rw-r--rw-
esempio_sort.txt
(644) -rw-r--r--
esempio_uniq.txt
(664) -rw-rw-r--
file_esempio.txt
user@ubuntu:~/Desktop/shell linux$ find -perm 644
./esempio_uniq.txt
./esempio_sort_num.txt
Restituisce i file che hanno esattamente i permessi specificati, in modo ottale o simbolico
user@ubuntu:~/Desktop/shell linux$ find -perm -242
./esempio_sort.txt
Restituisce i file che hanno almeno i permessi specificati, in modo ottale o simbolico
user@ubuntu:~/Desktop/shell linux$ find -perm +022
./esempio_sort.txt
./file_esempio.txt
Restituisce i file che hanno alcuni i permessi specificati, in modo ottale o simbolico. Almeno uno tra quelli indicati.
33
Linux e la shell Bash
Sistemi Operativi
SED
DEE - Politecnico di Bari
Esegue modifiche sui dati ricevuti dallo standard input, lavorando con stringhe
di qualsiasi lunghezza.
SINTASSI: sed [-n] [-e script] [file]
-n Il normale output non viene mostrato
-e Viene usata l'espressione script per elaborare il testo.
sed -e '/regexp/d' file
Elimina (d) tutte le righe corrispondenti all'espressione
regolare regexp
sed -e ‘n,md' file
Elimina (d) le righe dalla n alla m incluse.
sed –n -e '/regexp/p' file
Visualizza (p) solo le righe corrispondenti all'espressione
regolare regexp (-n).
sed -e 's/stringa1/stringa2/g' file Sostituisce (s) ogni occorrenza di stringa1 con stringa2. Se g
non è presente viene sostituita sola la prima occorrenza di
ogni riga.
34
Linux e la shell Bash
Sistemi Operativi
CUT
DEE - Politecnico di Bari
Permette di estrarre sezioni di una riga di testo, delimitate da un carattere
separatore.
SINTASSI: cut -d separatore -f sottoinsieme
-d separatore
indica il carattere/stringa separatore
-f intervallo
indica gli intervalli delle porzioni della riga
cut –d ; file -f 1,3,5-9
35
Considera ogni riga composta da più stringhe separate dal
separatore due punti (;) e ne visualizza solo prima, terza e
dalla quinta alla nona (estremi inclusi).
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
DIFF
Trova differenze tra due file. Questo comando risulta molto utile per
confrontare 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 [-bBr] [--brief] [--ignore-case] da_file1 a_file2
-b
Ignora differenze nella quantità di spazi bianchi
-B
Ignora differenze che consistono solo in righe vuote
--brief
Riferisce solo se i file sono diversi, senza mostrarne le differenze
-r
Confrontando due directory, confronta ogni sottodirectory
ricorsivamente
--ignore-case
Considera allo stesso modo maiuscole e minuscole, ignorando ogni
relativa differenza
colordiff:
36
Il comando ha le stesse opzioni ed effetti di diff ma mostrare un output
colorato che permette una maggiore leggibilità
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
GESTIONE DEI PROCESSI
Un processo eseguito in foreground interagisce in maniera diretta con l'utente
(browser, editor di testo).
Un processo in background è invece un processo che non interagisce direttamente con
l'utente e tipicamente fornisce un servizio non direttamente visibile all'utente (servizio di
sistema, demone).
Per eseguire un comando (o una pipeline) in background da shell si aggiunge il carattere
e-commerciale & alla fine della linea comando.
Quando viene lanciata una pipeline in background vengono mostrati il numero di job e il
PID dell'ultimo processo della pipeline.
user@ubuntu:~/Desktop/shell_linux$ sleep 5&
[1] 15902
user@ubuntu:~/Desktop/shell_linux$ ps
PID TTY
TIME CMD
6690 pts/0
00:00:00 bash
15902 pts/0
00:00:00 sleep
15904 pts/0
00:00:00 ps
37
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
YES – FG – BG
Stampa il carattere “y”, o la stringa specificata indefinitamente sullo standard output,
finché non viene terminato.
SINTASSI: yes [stringa]
La sequenza CTRL-Z ferma l'esecuzione del comando o di tutti i processi della pipeline
restituendo il controllo alla shell, il job in questione viene messo in background.
Premendo invece CTRL-C viene terminato il comando o la pipeline attualmente in
esecuzione.
Porta in foreground un job che prima era in background. Se non viene specificato il job
su cui agire si intende quello attuale, ossia l'ultimo referenziato.
SINTASSI: fg [num_job]
Permette di far riprendere in background l'esecuzione di un job sospeso, se il job in
questione non è in attesa di un input o di poter emettere l'output.
SINTASSI: bg [num_job]
38
Linux e la shell Bash
Sistemi Operativi
SLEEP - WAIT
DEE - Politecnico di Bari
Sospende la shell per i secondi specificati.
SINTASSI: sleep num_secondi
Sospende l'esecuzione del processo chiamante sino a quando uno dei suoi figli termina.
SINTASSI: wait [PID]
L'interprete standard di comandi, permette quindi di eseguire comandi letti da una
stringa a riga di comando (-c), dallo standard input (-s) o da un file specificato.
SINTASSI: sh -c stringa_comando
sh -s
sh file_script
39
Linux e la shell Bash
Sistemi Operativi
JOBS
DEE - Politecnico di Bari
Mostra lo stato dei job avviati nella sessione corrente. In maniera informale un jobs è
definibile come un'attività derivata da un comando dato attraverso una shell.
SINTASSI: jobs [-lp]
user@ubuntu:~$ sleep 15&
[1] 17245
user@ubuntu:~$ jobs
[1]+ Running
-l
sleep 15 &
Visualizzazione estesa delle informazioni di ogni processo di stato
user@ubuntu:~$ jobs -l
[1]+ 17245 Running
-p
sleep 15 &
Mostra solo il PID del processo leader del job selezionato
user@ubuntu:~$ jobs -p
17245
40
Linux e la shell Bash
Sistemi Operativi
PS
DEE - Politecnico di Bari
Mostra i processi attivi al momento.
SINTASSI: ps [-rxeaf] [f] [-u lista_user] [-p lista_PID] [-t lista_tty]
-u [lista_utenti]
Solo i processi relativi agli utenti in lista_utenti, se non specificato all'utente
corrente.
-r
Restringe la selezione solo ai processi in esecuzione
-f
Visualizzazione estesa
-p [lista_PID]
Solo le informazioni relative ai PID specificati
ps ax
Visualizza in processi utilizzando la notazione BSD
user@ubuntu:~$
PID TTY
1 ?
2 ?
3 ?
4 ?
5 ?
6 ?
7 ?
46 ?
48 ?
41
ps ax | head –n 10
STAT
TIME COMMAND
Ss
0:02 /sbin/init
S<
0:00 [kthreadd]
S<
0:00 [migration/0]
S<
0:03 [ksoftirqd/0]
S<
0:00 [watchdog/0]
S<
0:00 [events/0]
S<
0:00 [khelper]
S<
0:00 [kintegrityd/0]
S<
4:46 [kblockd/0]
STAT = Codici dello stato dei
processi
R – Running
D – Sleep non interromp.
S – Sleep interromp.
< - Alta Priorità
….
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
TOP
Mostra dinamicamente (in foreground), ad intervalli regolari, una serie di informazioni sui
processi e sul sistema.
SINTASSI: top
user@ubuntu:~$ top
top - 12:31:19 up 7:12, 2 users, load average: 1.64, 1.45, 1.36
Tasks: 116 total,
4 running, 112 sleeping,
0 stopped,
0 zombie
Cpu(s): 2.7%us, 1.7%sy, 0.0%ni, 33.2%id, 62.5%wa, 0.0%hi, 0.0%si, 0.0%st
Mem:
514296k total,
493048k used,
21248k free,
136620k buffers
Swap:
0k total,
0k used,
0k free,
153360k cached
PID
1983
6059
48
5938
6541
6633
16217
4974
5492
1
2
3
4
5
6
42
USER
root
root
root
mythtv
user
user
user
root
mysql
root
root
root
root
root
root
PR
15
20
15
20
20
20
20
20
20
20
15
RT
15
RT
15
NI
-5
0
-5
0
0
0
0
0
0
0
-5
-5
-5
-5
-5
VIRT RES SHR S %CPU %MEM
0
0
0 D 3.7 0.0
42320 14m 7376 S 3.7 3.0
0
0
0 S 1.3 0.0
69804 7844 5044 D 1.3 1.5
45252 14m 8428 S 0.7 2.9
30156 15m 10m S 0.7 3.0
98.8m 25m 12m R 0.7 5.0
13808 2820 2288 R 0.3 0.5
125m 17m 5188 S 0.3 3.5
3056 1888 564 S 0.0 0.4
0
0
0 S 0.0 0.0
0
0
0 S 0.0 0.0
0
0
0 S 0.0 0.0
0
0
0 S 0.0 0.0
0
0
0 R 0.0 0.0
TIME+
15:26.33
1:29.96
5:00.52
5:13.02
0:01.26
0:39.56
0:07.76
0:28.42
1:00.04
0:02.00
0:00.00
0:00.00
0:03.76
0:00.00
0:00.62
COMMAND
kjournald
Xorg
kblockd/0
mythbackend
gnome-settingsvmware-user-loa
gnome-terminal
vmtoolsd
mysqld
init
kthreadd
migration/0
ksoftirqd/0
watchdog/0
events/0
Linux e la shell Bash
PARTE SUPERIORE
Informazioni generali
sul sistema
TABELLA CENTRALE
mostra i processi che
usano maggiormente
la CPU
Sistemi Operativi
DEE - Politecnico di Bari
KILL
Il comando kill permette di inviare un segnale ai processi di un job, indicando
direttamente il PID del processo.
SINTASSI: kill [-s nome_segnale] [-nome_segn] [-num_segn] num_PID
1
SIGHUP
Indica la caduta della "portante" della linea telefonica.
2
SIGINT
Questo segnale è inviato ai processi per interromperli.
3
SIGQUIT
Indica, come il precedente, la richiesta di terminazione del processo
a cui è diretto, ma genera anche un'immagine di memoria del
processo in esecuzione al momento della ricezione del segnale
9
SIGKILL
Questo segnale provoca la conclusione forzata ed immediata del processo dal
kernel Linux.
15 SIGTERM
Questo segnale è inviato ai processi per concluderli. E' il segnale che si invia
premendo CTRL-C. (default)
30 SIGPWR
È il segnale che viene inviato a tutti i processi attivi nel caso in cui si verifichi
una caduta di tensione.
43
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
KILLALL
Si comporta esattamente come il comando kill ma non riceve come argomento uno o più
PID. Come il comando kill, se non è specificato nessun segnale di default esso è
SIGTERM (15).
SINTASSI: killall [-ui] [-nome_segn] [-num_segn] [nome_proc]
-u [utente]
Manda il segnale di terminazione a tutti i processi relativi all'utente specificato.
-i
Chiede conferma prima di inviare il segnale, processo per processo.
killall gdm
Termina tutti i processi della sessione grafica, questi infatti sono tutti figli del
processo gdm.
44
Linux e la shell Bash
Sistemi Operativi
Esercizi
DEE - Politecnico di Bari
Q1) Supponendo di trovarsi in una working directory qualsiasi, scrivere il comando per
poter listare il contenuto della home directory (compresi i file nascosti),
redirezionando l’output nel file output.out
ls -a ~/ > output.out
Q2) Si supponga che la current working directory sia ~/dir1. Descrivere come copiare il
file ~/dir1/myfile nella home directory, evitando di sovrascrivere un file esistente.
cp -i ./myfile ../
Equivalente a:
cp -i ./myfile ~/
cp -i ~/dir1/myfile ~/
45
Linux e la shell Bash
Sistemi Operativi
Esercizi
DEE - Politecnico di Bari
Q3)
Sia assegnato il seguente albero di directory e si supponga di avere i privilegi di superutente:
html/
www/
www/
var/
prova/
var/
passwd
(file)
/
etc/
/
default/
default/
shadow
(file)
html/
Dire come l’albero risulta modificato dopo la seguente sequenza di comandi:
cd /etc/default
ci posizioniamo nella cartella /etc/default
cp ../pa* ./
copia il file passwd nella directory corrente /etc/default
cd /var/www
ci posizioniamo nella cartella /var/www
mv ./html /
sposta la cartella html in root /
touch ./html
cambia l'orario di accesso e/o modifica
mkdir prova
crea la cartella prova nella directory corrente /var/www
cd –
ci posizioniamo nella cartella precedente /etc/default
pwd
visualizza la working directory
46
etc/
passwd
(file)
Linux e la shell Bash
shadow
(file)
passwd(file)
Sistemi Operativi
DEE - Politecnico di Bari
Esercizi
Q4) Scrivere il comando UNIX per visualizzare in ordine alfabetico i file contenuti nella
directory corrente e produrre il risultato nel file di nome fileA nella root directory.
ls | sort > /fileA
Q5) Si dica quale genere di output produce il comando seguente:
$grep – E ‘^.*\<7[3-9]’ ./prova?
La grep viene eseguita sul contenuto dei file aventi come nome ‘prova’ seguito da un
carattere qualsiasi (ES: prova1, prova2, provaA,…).
-E
indica che il comando grep è utilizza espressioni regolari estese
^.*
indica che le righe da selezionare possono iniziare con una qualsiasi
sequenza di caratteri
\<7[3-9]
indica che nella riga deve essere presente una parola che inizi con 7
seguito da un carattere tra 3 e 9 (ES: 73, 74, …79)
47
Linux e la shell Bash
Sistemi Operativi
DEE - Politecnico di Bari
Esercizi
Q6) Spiegare quale è l’effetto del seguente comando: $ls -aF1 | grep ‘\<.’
ls -aF1
visualizza i file presenti nella directory corrente compresi i file nascosti (-a),
aggiungendo a ciascun file un carattere chee ne indica il tipo (-F) mostrando il tutto
in una singola colonna (-1)
grep ‘\<.’
Seleziona i file che presentino delle parole che inizino con un carattere
qualsiasi. Seleziona quindi tutti i file ottenuti con il comando precedente
Q7) Scrivere una pipe di comandi che consenta di estrarre da un file di testo di nome fileA le prime
X linee e di ordinarle in ordine alfabetico decrescente.
head –n X fileA | sort –r
Q8) Scrivere una sequenza di comandi che consenta di ordinare in ordine alfabetico il contenuto
di un file di nome gianni e di estrarre dal file ordinato le prime X linee scrivendole in appendice
sul file gianni2 nella home directory dell’utente loggato.
sort gianni | head –n X >> ~/gianni2
48
Linux e la shell Bash
Sistemi Operativi
Esercizi
DEE - Politecnico di Bari
Q9) Il file di testo text.txt contiene le seguenti parole:
casa
cane
gatto
volpe
cane
tail -n +2
gatto
cane
grep ‘a’
gatto
volpe
Indicare l’output del seguente comando $ tail -n +2 text.txt | grep ‘a’| sort -r
gatto
cane
Q10) Dati due file, uno di nome fileA costituito da X linee di testo e uno di nome fileB costituito da Y
linee di testo, indicare l’output del comando (cat fileA fileB) | wc –l
Cat concatena i due file mentre wc visualizza il n° di linee complessive, quindi l’output sarà
rappresentato dal valore X+Y
49
Linux e la shell Bash
Sistemi Operativi
Esercizi
DEE - Politecnico di Bari
Q11) Qual è leffetto del comando: cat risultati|tail -5|grep ‘^.*\<[m-z].*$’ 2> risultati
se il file risultati è così fatto:
mario rossi
paolo paoli
rocco verdi
marco rossi
sergio bianchi
fabio giallo
rosa barbieri
12/07/1982
15/09/1984
12/02/1980
24/06/1984
02/07/1985
03/05/1988
17/03/1981
25
16
22
19
28
19
20
Ammesso
Non Ammesso
Ammesso
Ammesso
Ammesso
Ammesso
Ammesso
Non essendoci errori durante l’esecuzione del comando non saranno inviati messaggi sullo standard
error e quindi il file risultati sarà vuoto.
Q12) Qual è l’effetto del comando:
cat elenco.promossi|head -6|grep ‘\<2[29].*$’ -v &> output
mario rossi
paolo paoli
rocco verdi
marco rossi
sergio bianchi
fabio giallo
rosa barbieri
50
12/07/1982
15/09/1984
12/02/1980
24/06/1984
02/07/1985
03/05/1988
17/03/1981
25
16
22
19
28
19
20
Ammesso
Non Ammesso
Ammesso
Ammesso
Ammesso
Ammesso
Ammesso
mario rossi
paolo paoli
12/07/1982 25 Ammesso
15/09/1984 16 Non Ammesso
marco rossi
sergio bianchi
fabio giallo
24/06/1984 19 Ammesso
02/07/1985 28 Ammesso
03/05/1988 19 Ammesso
Linux e la shell Bash