Title: Il sistema operativo UNIX/LINUX
1Il sistema operativo UNIX La shell
Niccolò Battezzati ltniccolo.battezzati_at_polito.itgt
Politecnico di Torino Dip. Automatica e
Informatica
1
Sistemi Operativi - Introduzione
2Organizzazione
SISTEMI OPERATIVI Docente Prof. Pietro Laface
(pietro.laface_at_polito.it)? Esercitatore ? Ing.
Niccolò Battezzati (niccolo.battezzati_at_polito.it)?
2
Sistemi Operativi - Introduzione
3Programma
- Linux introduzione e comandi principali
- Shell linterprete dei comandi
- Linux dettagli e comandi avanzati
- Shell uso avanzato e script
- vi(m) un editor di testo
3
Sistemi Operativi - Introduzione
4Programma
- 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
- inode
- processi
- filtri (sed, grep, awk)
- Shell uso avanzato e script
- regexp
- sintassi e controllo di flusso
- gestione parametri
- Array
- vi(m) un editor di testo
- demo delleditor
- introduzione alle regexp
- ...
- ...
4
Sistemi Operativi - Introduzione
5Indice
- Introduzione
- Caratteristiche
- Espansione dei comandi
- Scripting di base
5
Sistemi Operativi - Introduzione
6Indice
- Introduzione
- Caratteristiche
- Espansione dei comandi
- Introduzione agli script
6
Sistemi Operativi - Introduzione
7Introduzione
- E lo strato più esterno del S.O. e fornisce
uninterfaccia utente - era lunica interfaccia prima dellintroduzione
del server X - In Unix la shell non è parte del kernel
- è un normale processo utente
7
Sistemi Operativi - Introduzione
8Introduzione
- Una shell può essere attivata
- automaticamente al login
- in modo annidato dentro un'altra shell
- Per terminare una shell
- exit
- il carattere di EOF (tipicamente d)?
8
Sistemi Operativi - Introduzione
9Introduzione
- In Unix sono disponibili molte shell
- Bourne shell (sh) la shell originaria, molto
usata nella programmazione sistemistica - C-shell (csh) la shell di Berkeley, ottima per
l'uso interattivo e per gli script non di sistema - Korn shell (ksh) la Bourne shell riscritta
dall'ATT per assomigliare di più alla C-shell - Tahoe C-shell (tcsh) dal progetto Tahoe, una
C-shell migliorata - Bourne again shell (bash)?
9
Sistemi Operativi - Introduzione
10Introduzione
- Allavviamento ogni shell esegue i comandi
elencati nei propri file di inizializzazione - /etc/profile comandi globali
- /.profile comandi per il singolo utente
- alcune shell usano anche il file .logout per
eseguire comandi quando vengono terminate.
10
Sistemi Operativi - Introduzione
11Introduzione
- Per la shell bash, i file di inizializzazione
sono - /etc/profile comandi per tutti gli utenti
- /.bash_profile opp. /.profile comandi propri
dellutente - /.bashrc comandi propri dellutente eseguiti in
una shell non di login.
11
Sistemi Operativi - Introduzione
12Indice
- Introduzione
- Caratteristiche
- Espansione dei comandi
- Introduzione agli script
12
Sistemi Operativi - Introduzione
13Caratteristiche e uso della shell BASH
- Parametri
- Completamento
- Pipeline
- Redirezione dell'I/O
- History
- Aliasing
- Gestione dei processi
13
Sistemi Operativi - Introduzione
14Parametri
- I parametri sono delle entita che memorizzano un
valore (indicato con parametro) - parametri posizionali 0, 1, 2, 3... Sono usati
per indicare i parametri passati a un comando o a
una funzione - parametri speciali
- la lista dei parametri posizionali
- il numero di parametri posizionali
- ? il valore di ritorno dellultimo comando
- variabili contengono un valore non tipizzato.
14
Sistemi Operativi - Introduzione
15Variabili
- Una variabile ha un nome e un valore, che viene
assegnato come segue - nomevalore (usare echo nome per
visualizzarlo) - Il comando export variabile permette di renderla
visibile ad altri processi - Il comando unset variabile ne cancella il valore
- Built-in variables, tra cui
- PATH
- HOME
- BASH_ARGV, BASH_ARGC
- Array unidimensioanli
- nomeindicevalore (usare echo nomeindice)
15
Sistemi Operativi - Introduzione
16Completamento
- Espansione dei nomi di file con il carattere TAB
- se la stringa comincia con la shell cerca di
completare col nome di una variabile - altrimenti, la shell cerca di completare col nome
di un comando - altrimenti, la shell cerca di completare con nomi
di file ordinari nella directory corrente.
16
Sistemi Operativi - Introduzione
17Pipeline
- Il collegamento stdout-stdin si chiama pipe e
crea in memoria un canale diretto tra i due
processi
17
Sistemi Operativi - Introduzione
18Pipeline
- comando1 comando2
- pipe tra i due comandi
- Esempi
- ls -la more
- ls l grep main.c
- cat main.h sed s/N 10/N 12/g
- cat main.c awk f my_script.awk
18
Sistemi Operativi - Introduzione
19Redirezione dellI/O
- comando lt file stdin da file
- comando gt file stdout in file (cancellato se
esiste)? - comando gtgt file stdout accodato a file
- comando ltlt FINE stdin da here
document text FINE - comando gt file (bash) stderrstdout in file
- comando 2gt file (bash) stderr in file (1 è
stdout)?
/dev/null e un file speciale su cui si puo
scrivere senza accumulare byte su disco
19
Sistemi Operativi - Introduzione
20History
- ?? mostra i comandi eseguiti precedentemente
- !n esegue il comando numero n nel buffer
- !-n esegue l'n-ultimo comando
- ! l'ultimo parametro del comando precedente
- ! tutti i parametri del comando precedente
- !stringa l'ultimo comando che inizia con stringa
- !!s/vecchio/nuovo rimpiazza la prima occorrenza
di vecchio nell'ultimo comando con nuovo - CTRL-r com filtra la history mostrando solo i
comandi che contengono la stringa com.
20
Sistemi Operativi - Introduzione
21Aliasing
- E possibile definire dei comandi con nuovi nomi
(alias) - Gli alias sono locali alla shell corrente
- alias elenca gli alias definiti
- alias nomevalore definisce un alias
- unalias nome cancella un alias
- Esempi
- alias llls -al
- alias vivim
21
Sistemi Operativi - Introduzione
22