27
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati <[email protected]> Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Embed Size (px)

Citation preview

Page 1: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione1

Il sistema operativo UNIXDettagli e comandi avanzati

Niccolò Battezzati <[email protected]>

Politecnico di Torino

Dip. Automatica e Informatica

Page 2: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione2

Programma

• Linux: introduzione e comandi principali

• Shell: l’interprete dei comandi

• Linux: dettagli e comandi avanzati

• Shell: uso avanzato e script

• Il linguaggio di programmazione AWK

• vi(m): un editor di testo

Page 3: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione4

Indice• Filtri

• File system: dettagli

• Altri comandi avanzati

• Il costrutto for-in

Page 4: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione5

Indice• Filtri

• File system: dettagli

• Altri comandi avanzati

• Il costrutto for-in

Page 5: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione6

Filtri

• Comandi che operano sul proprio standard input per filtrarlo secondo alcuni parametri:

• grep• sed• cut• sort• uniq

Page 6: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione7

grep• grep cerca nei file di input le righe che fanno match

con il pattern fornito.• Sintassi:

grep [opzioni] pattern [file...]• Opzioni utili:

• -A num stampa altre num righe

• -H stampa il nome del file per ogni match

• -i case insensitive

• -n stampa il numero di riga del match

• -r, -R ricorsivo sul sottoalbero

• -v stampa solo le righe che non fanno match

Page 7: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione8

grep - regexp• Le espressioni regolari sono pattern che descrivono un

insieme di stringhe. Espressioni complesse si costruiscono combinando espressioni semplici.

• Regexp:• [c1c2] uno qualsiasi dei caratteri in parentesi

• [c1-c5] uno qualsiasi dei caratteri nel range

• [^c1-c5] uno qualsiasi dei caratteri NON nel range

• . un carattere qualsiasi

• ^, $ inizio e fine riga

• \<,\> inizio e fine parola

Page 8: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione9

grep - regexp• Operatori di ripetizione (possono seguire ogni regexp):

• * l’elemento precedente c’e` zero o piu` volte

• + l’elemento precedente c’e` una o piu` volte

• {n} l’elemento precedente c’e` esattamente n volte

• {n,} l’elemento precedente c’e` n o piu` volte

• {n,m} l’elemento precedente c’e` min n e max m volte

• Operatori di concatenzaione:• | OR tra due regexp

• () gestiscono le precedenze tra gli operatori

• L’operatore \ serve per poter usare in modo letterale i caratteri che hanno significati speciali.

Page 9: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione10

grep - esempi

Esempi:

• ps -ef | grep “my_loop 100[1-5]”

• grep –H –n -r “my_func(“ *.[ch]

• cat f1.c | grep –v “\/\*.*\*\/” > f2.c

Page 10: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione11

sed

• sed permette di fare semplici trasformazioni di un testo passato come input.

• Sintassi:

sed [opzioni] {script} [file]...• Opzioni utili:

• -f script esegue i comandi nel file script

• -n stampa solo le parti richieste (def. tutto stdin)

• Sintassi degli script:• ogni comando ha la seguente sintassi

[address[,address]] command

Page 11: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione12

sed - comandi

Page 12: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione13

sed - indirizzi• 0 indirizzi - il comando si applica a ogni linea

• 1 indirizzo - il comando si applica a tutte le righe con quell’indirizzo, che puo` essere:• num• /regexp/• $

• 2 indirizzi - il comando si applica a tutte le righe comprese tra i due indirizzi (compresi).

Page 13: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione14

sed - esempi

Esempi:

• cat file.txt | sed –n ‘=’ | tail –n 1

• sed ‘1 d’ file.txt

• sed –n ‘/^\/\*/,$ p’ file.txt

• cat f1.c | sed ‘s/myfunc/myFunc/g’ > f2.c

Page 14: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione15

cut

• cut seleziona porzioni di ogni linea del file in input.• Sintassi:

cut -c|-f list [–d delim] [file]...• Parametri:

• list lista dei campi da selezionare

• -d delim usa delim per dividere i campi (default TAB)

Esempi:• cat pippo.txt | cut –f 1,3

• cut –f 1-3,5-6 –d “ ” pippo.txt

Page 15: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione16

sort• sort ordina i file in input• Sintassi:

sort [option]... [file]...• Opzioni utili:

• -f case insensitive

• -n ordine numerico (default alfabetico)

• -r ordine inverso

• -k c1[,c2] ordina sulla base dei soli campi selezionati

• -m merge di file gia` ordinati

Esempi:• cat pippo.txt | sort –r –k 1,3 -f

Page 16: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione17

uniq• uniq stampa o elimina le righe ripetute nel file in

input. N.B. Richiede che il file sia ordinato!!!• Sintassi:

uniq [options] [in_file] [out_file]• Opzioni utili:

• -c stampa il numero di ripetizioni prima della riga

• -d stampa solo le righe ripetute

• -f num ignora i primi num campi per il confronto

• -i case insensitive

Esempi:• cat pippo.txt | sort –r –k 1,3 | uniq –f 1

Page 17: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione18

Indice• Filtri

• File system: dettagli

• Altri comandi avanzati

• Il costrutto for-in

Page 18: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione19

File system• L’organizzazione piu` comune del file system UNIX e`:

/

bin

home

sbin

usr

etc

var

dev

mnt

bin

sbin

lib

include

log

Page 19: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione20

File system• Il kernel virtualizza diverse partizioni (ognuna col suo

file system) come se fossero tutte parte dello stesso albero.

• A ogni file di qualunque tipo e` associato un inode number, l’indice di una tabella in cui ogni elemento (inode) contiene le informazioni di un file.

• Le directory sono delle tabelle che associano al nome di un file il suo inode number. Tale associazione si chiama link.

• Lo stesso inode number puo` apparire in piu` link!

Page 20: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione21

File system - comandi• Per creare dei link si usa il seguente comando:

ln [opzioni] source_file [target_file]

• Opzioni utili:• -s crea un link SIMBOLICO (default HARD link)

N.B. I link simbolici contengono il path del file puntato e possono essere fatti tra file system differenti (gli hard link no!).

• Il comando rm rimuove il file solo se il numero dei link e` a 0

• Il comando mv equivale ad eseguire prima ln e poi rm.

Page 21: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione22

Indice• Filtri

• File system: dettagli

• Altri comandi avanzati

• Il costrutto for-in

Page 22: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione23

wc• wc visualizza il numero di linee, parole e byte nel file in

input.• Sintassi:

wc [options] [file...]• Opzioni utili:

• -c conta il numero di byte

• -w conta il numero di parole

• -l conta il numero di linee

Esempi:• num_lines=`cat pippo.txt | wc –l`

Page 23: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione24

tr• tr copia stdin su stdout facendo le sostituzioni

specificate.• Sintassi:

tr [options] string1 [string2]• Opzioni utili:

• -d cancella i caratteri in string1

Esempi:• echo ciao | tr ia IA cIAo

Page 24: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione25

tar• tar gestisce l’archiviazione (e la compressione) di dati.

• Uso normale:

tar –czvf file.tgz directory

tar –xzvf file.tgz• Opzioni utili:

• -c crea l’archivio

• -x estrae l’archivio

• -z, -j comprime (gzip o bzip2)

• -v verbose (stampa i messaggi)

• -f specifica il file di archivio

Page 25: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione26

Indice• Filtri

• File system: dettagli

• Altri comandi avanzati

• Il costrutto for-in

Page 26: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione27

Il costrutto for-in

for var in value1 value2 value3...

do

# commands

done

Esegue i comandi specificati, una volta per ogni valore assunto dalla variabile var.

Page 27: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica

Sistemi Operativi - Introduzione28

Il costrutto for-in - esempi• 1:

for i in {1..5}do

echo $i >> numeri.txtdone

• 2:for f in `ls | grep .*7$`; do chmod g+x $f; done

equivalente a:

find . –maxdepth 1 –name “*7” –exec chmod g+x \{} \;