Sei sulla pagina 1di 50

Sistemi Operativi

DEE - Politecnico di Bari

Linux e la shell Bash Parte II


Gestione file e directory Link Redirezione I/O Concatenamento Concatenamento comandi Visualizzazione file Espressioni regolari Filtri e ricerche Gestione processi
Testi di riferimento: Linux e la shell Bash La shell Bash

http://sisinflab.poliba.it/ruta/linux/Linux e la shell Bash.pdf http://sisinflab.poliba.it/ruta/linux/Linux http://www-ictserv.poliba.it/piscitelli/doc/lab_esercitazioni_SO_no/bash_shell.pdf http://www-

A.A. 2009-2010 2009-

Sistemi Operativi
DEE - Politecnico di Bari

Percorsi assoluti e relativi: 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

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

CD

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 . cd .. La directory di lavoro rester quella corrente.

/home/user/Desktop/shell_linux
La directory di lavoro diventer quella padre di quella corrente.

/home/user/Desktop

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

LS

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

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

LS

-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

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 -v Rimuove la directory specificata anche se non vuota Verbose mode.

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

CP - RM

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

Q2

Linux e la shell Bash

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
mv file1 file2
Rinomina file1 in file2. Se quest'ultimo esiste viene sovrascritto da file1 Sposta file1 dentro directoryA

mv file1 directoryA

mv directoryA directoryB Sposta directoryA in directoryB se quest'ultima esiste gi,


viceversa rinomina directoryA in directoryB

mv directoryA file1

Operazione non consentita.

Q3

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

FILE

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: ./esempio_sort.txt: ./esempio_uniq.txt: ./file_esempio.txt: ASCII text ASCII text UTF-8 Unicode text ASCII text

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 -s

Non crea il link se file_destinazione esiste gi 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 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: < > 2> >> 2>> n> n>&m 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> Redirige solo lo standard error Redirige lo standard output su un file aggiungendo il contenuto in coda al file di ridirezione, append mode Redirige lo standard error su un file in append mode Redirige il descrittore n-esimo (n>> append mode) 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 -rw-r--rw- 1 user user 13 2010-05-31 06:36 esempio_sort_num.txt 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 ~ echo testo >> file_prova Mostra il percorso della home-directory dell'utente loggato 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 cat file1 file2 > file3 Mostra sullo standard output il contenuto di file1. 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
Mostra mediate il paginatore less l'output del comando precedente

15

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

Filtri e ricerche: SORT ricerche:

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

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

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


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

Non ordinati

Ordinati in base al testo

Ordinamento numerico

18

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

SORT flag

-m -b -d -f -i -r

Fonde insieme i file indicati che devono essere gi ordinati Ignora gli spazi vuoti iniziali Ignora tutti i caratteri che non siano lettere, numeri o spazi Non distingue tra lettere maiuscole e minuscole Ignora i caratteri speciali al di fuori del set ASCII puro 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:]
lettere minuscole

[:alnum:]
caratteri alfanumerici

[:digit:]
cifre numeriche

[:punct:] Caratteri di punteggiatura [:space:] Caratteri definiti come spazi bianchi [:blank:] Comprende solo <space> e <tab> Linux e la shell Bash

21

Sistemi Operativi
DEE - Politecnico di Bari

Regole sintattiche

. (punto) [xwyz] [a-f] [^a-f] ^[a-f] [a-f]$ \<[a-f] [a-f]\> y{n,m} y* y? y+

carattere qualsiasi Set di caratteri qualsiasi all'interno delle parentesi quadre, i caratteri sono in OR tra di loro Un carattere qualsiasi tra a ed f, estremi inclusi Tutti i caratteri tranne quelli specificati Cerca il modello specificato all'inizio di ogni riga Cerca il modello specificato alla fine di ogni riga Cerca il modello specificato all'inizio di ogni parola Cerca il modello specificato alla fine di ogni parola Ripetizione del carattere da n a m volte. n ed m possono anche non essere definiti Ripetizione del carattere da 0 a pi volte (Eq. a y{0,}) Al massimo una ripetizione (Eq. a y{0,1}) Almeno una ripetizione (Eq. a y{1,}) [^a-f] diverso da ^[a-f]

22

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

GREP flag

-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 Non distingue tra caratteri maiuscoli e minuscoli di modello

23

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 one

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.

24

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

GREP - Esempi

Mostra tutte le righe di file_esempio

3) grep '^1.*e$' file_esempio.txt


12 twelve 1 one

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 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

Q5 Q6

25

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

HEAD

Mostra le prime righe o byte di un file, di default le prime 10 righe. SINTASSI: head [-cn] [file]
-c X -c -X Mostra i primi X byte di un file Mostra i byte di un file esclusi gli ultimi X byte

user@ubuntu:~/Desktop/shell linux$ head -c 6 file_esempio.txt


15 fif
-n X -n -X Mostra le prime X righe di un file (equaivale a -X) Mostra le righe di un file escluse le ultime X

1 byte per carattere

user@ubuntu:~/Desktop/shell linux$ head -n 3 file_esempio.txt


15 fifteen 14 fourteen 13 thirteen Q7 Q8

26

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

TAIL

Mostra le ultime righe o byte di un file, di default le prime 10 righe. SINTASSI: tail [-cn] [file]
-c X -c +X Mostra gli ultimi X byte di un file Mostra gli ultimi byte di un file a partire dal byte X

user@ubuntu:~/Desktop/shell linux$ tail -c 3 file_esempio.txt


ne
-n X -n +X Mostra le ultime X righe di un file (equivale a -X) Mostra le ultime righe di un file a partire dalla riga X

Lultimo byte EOF

user@ubuntu:~/Desktop/shell linux$ tail -n 3 file_esempio.txt


3 three 2 two 1 one

Q9

Q11 Q12

27

Linux e la shell Bash

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
DEE - Politecnico di Bari

UNIQ - flag

-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 -i -s N -w N

Salta il confronto delle prime N parole Nel confronto ignora la differenza tra lettere maiuscole e minuscole Salta il confronto dei primi N caratteri 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
Q10

31

Linux e la shell Bash

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 espress.regol. -iname espress.regol. -user utente_1 -group gruppo_a -maxdepth X -mindepth X -[mac]time n -[mac]min n -empty -size n[bckMG] Restituisce i file aventi nel nome la stringa espress.regol. Come -name ma non distingue maiuscole e minuscole in espress.regol. Cerca i file in percorso aventi come utente proprietario utente_1 Cerca i file in percorso aventi come gruppo proprietario gruppo_a Prosegue la ricerca massimo fino al livello X, con X intero non negativo Prosegue la ricerca a partire dal livello X Trova i file o directory la cui data di modifica (mtime), accesso (atime) o creazione (ctime) corrisponde a n giorni fa Come l'opzione precedente ma n corrisponde a minuti Solo file e directory non vuoti File che usano al massimo n unit di spazio

32

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

FIND - flag

(644) -rw-r--r-(646) -rw-r--rw(644) -rw-r--r-(664) -rw-rw-r--

esempio_sort_num.txt esempio_sort.txt esempio_uniq.txt 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
DEE - Politecnico di Bari

SED

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 sed -e n,md' file sed n -e '/regexp/p' file Elimina (d) tutte le righe corrispondenti all'espressione regolare regexp Elimina (d) le righe dalla n alla m incluse. 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
DEE - Politecnico di Bari

CUT

Permette di estrarre sezioni di una riga di testo, delimitate da un carattere separatore. SINTASSI: cut -d separatore -f sottoinsieme
-d separatore -f intervallo indica il carattere/stringa separatore indica gli intervalli delle porzioni della riga 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).

cut d ; file -f 1,3,5-9

35

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 -B --brief -r --ignore-case Ignora differenze nella quantit di spazi bianchi Ignora differenze che consistono solo in righe vuote Riferisce solo se i file sono diversi, senza mostrarne le differenze Confrontando due directory, confronta ogni sottodirectory ricorsivamente Considera allo stesso modo maiuscole e minuscole, ignorando ogni relativa differenza

colordiff:

Il comando ha le stesse opzioni ed effetti di diff ma mostrare un output colorato che permette una maggiore leggibilit

36

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 6690 pts/0 15902 pts/0 15904 pts/0 TIME CMD 00:00:00 bash 00:00:00 sleep 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
DEE - Politecnico di Bari

SLEEP - WAIT

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
DEE - Politecnico di Bari

JOBS

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 sleep 15 &

-l

Visualizzazione estesa delle informazioni di ogni processo di stato


sleep 15 &

user@ubuntu:~$ jobs -l
[1]+ 17245 Running

-p

Mostra solo il PID del processo leader del job selezionato

user@ubuntu:~$ jobs -p
17245

40

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

PS

Mostra i processi attivi al momento. SINTASSI: ps [-rxeaf] [f] [-u lista_user] [-p lista_PID] [-t lista_tty]
-u [lista_utenti] -r -f -p [lista_PID] ps ax Solo i processi relativi agli utenti in lista_utenti, se non specificato all'utente corrente. Restringe la selezione solo ai processi in esecuzione Visualizzazione estesa Solo le informazioni relative ai PID specificati

Visualizza in processi utilizzando la notazione BSD


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 .

user@ubuntu:~$ PID TTY 1 ? 2 ? 3 ? 4 ? 5 ? 6 ? 7 ? 46 ? 48 ?

41

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 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 PARTE SUPERIORE Informazioni generali sul sistema

TABELLA CENTRALE mostra i processi che usano maggiormente la CPU

42

Linux e la shell Bash

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 2 3 SIGHUP SIGINT SIGQUIT Indica la caduta della "portante" della linea telefonica. Questo segnale inviato ai processi per interromperli. 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 Questo segnale provoca la conclusione forzata ed immediata del processo dal kernel Linux. Questo segnale inviato ai processi per concluderli. E' il segnale che si invia premendo CTRL-C. (default) il segnale che viene inviato a tutti i processi attivi nel caso in cui si verifichi una caduta di tensione.

SIGKILL

15 SIGTERM 30 SIGPWR

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] -i Manda il segnale di terminazione a tutti i processi relativi all'utente specificato. 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
DEE - Politecnico di Bari

Esercizi

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 loutput 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
DEE - Politecnico di Bari

Esercizi

Q3)

Sia assegnato il seguente albero di directory e si supponga di avere i privilegi di superutente:


html/ www/ var/ var/ prova/ passwd (file) etc/ default/ shadow (file) html/ passwd (file) etc/ default/ shadow (file) passwd(file)

www/

Dire come lalbero risulta modificato dopo la seguente sequenza di comandi: cd /etc/default cp ../pa* ./ cd /var/www mv ./html / touch ./html mkdir prova cd pwd ci posizioniamo nella cartella /etc/default copia il file passwd nella directory corrente /etc/default ci posizioniamo nella cartella /var/www sposta la cartella html in root / cambia l'orario di accesso e/o modifica crea la cartella prova nella directory corrente /var/www ci posizioniamo nella cartella precedente /etc/default visualizza la working directory

46

Linux e la shell Bash

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 ^.* \<7[3-9] indica che il comando grep utilizza espressioni regolari estese indica che le righe da selezionare possono iniziare con una qualsiasi sequenza di caratteri 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 leffetto 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) Seleziona i file che presentino delle parole che inizino con un carattere qualsiasi. Seleziona quindi tutti i file ottenuti con il comando precedente

grep \<.

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 dellutente loggato. sort gianni | head n X >> ~/gianni2

48

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

Esercizi

Q9) Il file di testo text.txt contiene le seguenti parole: casa cane gatto volpe tail -n +2 cane gatto volpe grep a cane gatto

Indicare loutput 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 loutput del comando (cat fileA fileB) | wc l Cat concatena i due file mentre wc visualizza il n di linee complessive, quindi loutput sar rappresentato dal valore X+Y

49

Linux e la shell Bash

Sistemi Operativi
DEE - Politecnico di Bari

Esercizi

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 lesecuzione del comando non saranno inviati messaggi sullo standard error e quindi il file risultati sar vuoto. Q12) Qual leffetto 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 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 marco rossi sergio bianchi fabio giallo 12/07/1982 25 Ammesso 15/09/1984 16 Non Ammesso 24/06/1984 19 Ammesso 02/07/1985 28 Ammesso 03/05/1988 19 Ammesso

50

Linux e la shell Bash

Potrebbero piacerti anche