sistemi operativi - introduzione 1 il sistema operativo unix dettagli e comandi avanzati niccolò...
TRANSCRIPT
Sistemi Operativi - Introduzione1
Il sistema operativo UNIXDettagli e comandi avanzati
Niccolò Battezzati <[email protected]>
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
Sistemi Operativi - Introduzione4
Indice• Filtri
• File system: dettagli
• Altri comandi avanzati
• Il costrutto for-in
Sistemi Operativi - Introduzione5
Indice• Filtri
• File system: dettagli
• Altri comandi avanzati
• Il costrutto for-in
Sistemi Operativi - Introduzione6
Filtri
• Comandi che operano sul proprio standard input per filtrarlo secondo alcuni parametri:
• grep• sed• cut• sort• uniq
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
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
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.
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
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
Sistemi Operativi - Introduzione12
sed - comandi
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).
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
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
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
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
Sistemi Operativi - Introduzione18
Indice• Filtri
• File system: dettagli
• Altri comandi avanzati
• Il costrutto for-in
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
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!
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.
Sistemi Operativi - Introduzione22
Indice• Filtri
• File system: dettagli
• Altri comandi avanzati
• Il costrutto for-in
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`
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
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
Sistemi Operativi - Introduzione26
Indice• Filtri
• File system: dettagli
• Altri comandi avanzati
• Il costrutto for-in
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.
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 \{} \;