Scaricare la presentazione
La presentazione è in caricamento. Aspetta per favore
PubblicatoBerengar Gagliardi Modificato 11 anni fa
1
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica
2
Sistemi Operativi - Introduzione 2 Programma Linux: introduzione e comandi principali Shell: linterprete dei comandi Linux: dettagli e comandi avanzati Shell: uso avanzato e script Il linguaggio di programmazione AWK vi(m): un editor di testo
3
Sistemi Operativi - Introduzione 3 Programma Linux: introduzione e comandi principali introduzione file system (base) comandi principali Shell: linterprete dei comandi introduzione sessioni (variabili dambiente ecc.) funzioni di interpretazione regexp scripting di base Linux: dettagli e comandi avanzati file system, inode e link sed, grep (regexp) cut, sort, uniq, wc archiving (tar, gzip) introduzione del for in Shell: uso avanzato e script sintassi e controllo di flusso gestione parametri array read vi(m): un editor di testo demo delleditor introduzione alle regexp
4
Sistemi Operativi - Introduzione 4 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
5
Sistemi Operativi - Introduzione 5 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
6
Sistemi Operativi - Introduzione 6 Variabili Variabili predefinite: $0 nome script $1,$2,... parametri $# numero parametri $* stringa con tutti i parametri $? valore di ritorno dellultmo programma $$ PID del processo $?var 1 se var e` stata definita $#var il numero di elementi nellarray var
7
Sistemi Operativi - Introduzione 7 Variabili - array Sono gestite variabili vettoriali unidimensionali: Esempi: var=(1 2 5 ciao) echo ${var[0]} echo ${var[1-3]} Utili nelle funzioni: BASH_ARGV[] e BASH_ARGC
8
Sistemi Operativi - Introduzione 8 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
9
Sistemi Operativi - Introduzione 9 Funzioni Si possono definire delle funzioni, prima che vengano chiamate, con la seguente sintassi: [function] name () {commands} Il valore di ritorno e` definito: o dal valore dellultimo comando eseguito o dal comando return I parametri sono definiti con la notazione posizionale: $1, $2, $3... Le funzioni vengono chiamate con la seguente sintassi: name param1 param2...
10
Sistemi Operativi - Introduzione 10 Funzioni - esempio function printUsage { echo Wrong number of parameters ($1) echo Usage: $0 param1 param2 exit 0 }... if test $# -ne 2 then printUsage $# fi
11
Sistemi Operativi - Introduzione 11 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
12
Sistemi Operativi - Introduzione 12 Costrutto if-then-fi Sintassi: if condition then commands [elif condition then commands] [else commands] fi Condizioni: if test param op param oppure if [ param op param ] SERVONO gli SPAZI!!!
13
Sistemi Operativi - Introduzione 13 Flag di confronto Confronto tra numeri: -eq vero se i due numeri sono uguali -ne vero se i due numeri non sono uguali -gt vero se il primo numero e` maggiore -ge vero se il primo numero e` maggiore o uguale -lt vero se il primo numero e` minore -le vero se il primo numero e` minore o uguale Confronto tra stringhe: = vero se le due stringhe sono uguali != vero se le due stringhe non sono uguali
14
Sistemi Operativi - Introduzione 14 Flag di confronto Confronto per file: -f vero se largomento e` un file normale -d vero se largomento e` una directory -r vero se largomento ha il permesso di lettura -w vero se largomento ha il permesso di scrittura -x vero se largomento ha il permesso di esecuzione Operatori logici: ! NOT -a AND -o OR
15
Sistemi Operativi - Introduzione 15 Costrutto if - esempi if test $1 = -r then recursive_search=1 fi if [ $recursive_search –eq 1 –a –d $2 ] then find $2 –name *.c > $3 elif [ $recursive_search –eq 0 –a –d $2 ] then find $2 –maxdepth 1 *.c > $3 else printUsageAndExit fi
16
Sistemi Operativi - Introduzione 16 Costrutto case-esac Sintassi: case var in str1) commands ;; str2|str3) commands ;;... *) commands ;; esac
17
Sistemi Operativi - Introduzione 17 Costrutto case - esempi case $1 in 01 | 1) echo Gennaio ;; 02 | 2) echo Febbraio ;;... 12) echo Dicembre ;; *) echo Error: unknown month;; esac
18
Sistemi Operativi - Introduzione 18 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
19
Sistemi Operativi - Introduzione 19 Costrutto for-do-done Sintassi: 1: for (( expr1 ; expr2 ; expr3 )) do commands done 2: for var in list... do commands done
20
Sistemi Operativi - Introduzione 20 Costrutto for - esempi for (( i=0 ; i<10 ; i++ )) do echo $i done for i in `ls | grep *.c` do chown pippo:disney $i done
21
Sistemi Operativi - Introduzione 21 Costrutto while-do-done Sintassi: while condition do commands done
22
Sistemi Operativi - Introduzione 22 Costrutto while - esempi i=0 while [ $i –lt 10 ] do echo $i i=$(($i+1)) done (per scambiare due colonne in un file): while read var1 var2 do echo $var2 $var1; done file_out
23
Sistemi Operativi - Introduzione 23 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
24
Sistemi Operativi - Introduzione 24 Read read permette di leggere una riga da stdin, con la seguente sintassi: read var1 var2... varN ogni parola (separata da spazi) viene messa in una variabile lultima variabile contiene tutte le rimanenti parole permette di fare input interattivo.
25
Sistemi Operativi - Introduzione 25 read - esempi (per scambiare due colonne in un file): while read var1 var2 do echo $var2 $var1; done file_out (input interattivo): echo –n Insert a sentence: read w1 w2 others echo Word 1 is: $w1 echo Word 2 is: $w2 echo The rest of the line is: $others
26
Sistemi Operativi - Introduzione 26 Indice Variabili Funzioni Costrutti di confronto (if e case) Loop (for e while) Read Segnali
27
Sistemi Operativi - Introduzione 27 Segnali I processi possono ricevere dei segnali, o dallutente o da altri processi. Il processo puo` quindi decidere di: ignorare il segnale eseguire il comportamento di default gestire il segnale Per mandare un segnale si usa il comando kill –signal pid dove signal puo` essere un numero o un nome (come KILL o USR1 ecc.).
28
Sistemi Operativi - Introduzione 28 Segnali Per specificare il comportamento da adottare si usa il comando: trap [commands] [signal...] 1.trap commands signals... esegue commands alla ricezione di signals 2.trap signals... ignora tutti i segnali signals 3.trap signals... ripristina il comportamento di default per i segnali signals.
29
Sistemi Operativi - Introduzione 29 Segnali - esempi (per gestire il segnale SIGALRM): trap echo mi sono svegliato ALRM (per ripristinare il valore di default): trap ALRM (per ignorare SIGUSR1 e SIGUSR2): trap USR1 USR2
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.