sistemi operativi - introduzione 1 il sistema operativo unix la shell niccolò battezzati...
TRANSCRIPT
![Page 1: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/1.jpg)
Sistemi Operativi - Introduzione1
Il sistema operativo UNIXLa shell
Niccolò Battezzati <[email protected]>
Politecnico di Torino
Dip. Automatica e Informatica
![Page 2: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/2.jpg)
Sistemi Operativi - Introduzione2
Organizzazione
Laboratorio
– MER 13:00 – 16:00
– MER 16:00 – 19:00(LAIB 1D)
Esercitazioni in aula
– MAR 14:30 – 16:00(AULA 14 – non tutte le settimane)
Squadre:
– A: A-I + PoliTONG
– B: J-Z
– Alterniamo gli orari ???
![Page 3: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/3.jpg)
Sistemi Operativi - Introduzione3
Programma
• Linux: introduzione e comandi principali
• Shell: l’interprete dei comandi
• Linux: dettagli e comandi avanzati
• Shell: uso avanzato e script
• vi(m): un editor di testo
![Page 4: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/4.jpg)
Sistemi Operativi - Introduzione4
Indice• Introduzione
• Caratteristiche
• Espansione dei comandi
• Scripting di base
![Page 5: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/5.jpg)
Sistemi Operativi - Introduzione5
Indice• Introduzione
• Caratteristiche
• Espansione dei comandi
• Introduzione agli script
![Page 6: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/6.jpg)
Sistemi Operativi - Introduzione6
Introduzione
• E’ lo strato più esterno del S.O. e fornisce un’interfaccia utente – era l’unica interfaccia prima dell’introduzione
del server X
• In Unix la shell non è parte del kernel– è un normale processo utente
![Page 7: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/7.jpg)
Sistemi Operativi - Introduzione7
Introduzione
• 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)
![Page 8: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/8.jpg)
Sistemi Operativi - Introduzione8
Introduzione• 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'AT&T per assomigliare di più alla C-shell
– Tahoe C-shell (tcsh): dal progetto Tahoe, una C-shell migliorata
– Bourne again shell (bash)
![Page 9: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/9.jpg)
Sistemi Operativi - Introduzione9
Introduzione
• All’avviamento, 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.
![Page 10: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/10.jpg)
Sistemi Operativi - Introduzione10
Introduzione
• Per la shell bash, i file di inizializzazione sono:– /etc/profile: comandi per tutti gli utenti
– ~/.bash_profile opp. ~/.profile: comandi propri dell’utente
– ~/.bashrc: comandi propri dell’utente eseguiti in una shell non di login.
![Page 11: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/11.jpg)
Sistemi Operativi - Introduzione11
Indice• Introduzione
• Caratteristiche
• Espansione dei comandi
• Introduzione agli script
![Page 12: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/12.jpg)
Sistemi Operativi - Introduzione12
Caratteristiche e uso della shell BASH
• Parametri• Completamento• Pipeline• Redirezione dell'I/O• History• Aliasing• Gestione dei processi
![Page 13: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/13.jpg)
Sistemi Operativi - Introduzione13
Parametri• 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 dell’ultimo
comando – variabili: contengono un valore non tipizzato.
![Page 14: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/14.jpg)
Sistemi Operativi - Introduzione14
Variabili• Una variabile ha un nome e un valore, che viene assegnato come
segue:
• nome=“valore” (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:
• nome[indice]=“valore” (usare echo ${nome[indice]})
![Page 15: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/15.jpg)
Sistemi Operativi - Introduzione15
Completamento• 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.
![Page 16: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/16.jpg)
Sistemi Operativi - Introduzione16
Pipe
• Il collegamento stdout-stdin si chiama pipe e crea in memoria un canale diretto tra i due processi
procprocstdin(0) stdout(1)
stderr(2)
procprocstdin stdout
stderr
![Page 17: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/17.jpg)
Sistemi Operativi - Introduzione17
Pipe• 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
![Page 18: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/18.jpg)
Sistemi Operativi - Introduzione18
Redirezione dell’I/O• comando < file: stdin da file• comando > file: stdout in file (cancellato se
esiste)• comando >> file: stdout accodato a file• comando << FINE: stdin da “here document”
textFINE
• comando &> file: (bash) stderr+stdout in file• comando 2> file: (bash) stderr in file (1 è stdout)
/dev/null e` un file speciale su cui si puo` scrivere senza accumulare byte su disco
![Page 19: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/19.jpg)
Sistemi Operativi - Introduzione19
History• : 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.
![Page 20: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/20.jpg)
Sistemi Operativi - Introduzione20
Aliasing• E’ possibile definire dei comandi con nuovi nomi
(alias)• Gli alias sono locali alla shell corrente
• alias: elenca gli alias definiti• alias nome=“valore”: definisce un alias• unalias nome: cancella un alias
Esempi:alias ll=“ls -al”alias vi=“vim”
![Page 21: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/21.jpg)
Sistemi Operativi - Introduzione21
Indice• Introduzione
• Caratteristiche
• Espansione dei comandi
• Introduzione agli script
![Page 22: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/22.jpg)
Sistemi Operativi - Introduzione22
Quoting• Serve per dire alla shell di non interpretare
alcuni caratteri speciali. Ci sono tre metodi:
– \ preserva il valore letterale del carattere che segue;
– ‘’ preservano il valore letterale del loro contenuto. Non possono essere innestati;
– “” preservano il valore letterale del contenuto tranne dei simboli $, `, \. Possono essere innestate.
![Page 23: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/23.jpg)
Sistemi Operativi - Introduzione23
Interpretazione• Dopo aver suddiviso la linea di comando in parole, la shell
applica diversi tipi di sostituzione (in ordine!):
– preamble{e1, e2, ...}: sostituito con “preamblee1 preamblee2 ...”
– ~: sostituito con $HOME
– $param: sostituito col valore del parametro (se il parametro e` complesso meglio usare ${param})
– `comando`: sostituito con lo standard output di comando
– $((espressione)): sostituito col risultato dell’espressione aritmetica
– parole contenenti *, ? e [ sono sostituite con il valore dell’espressione regolare.
![Page 24: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/24.jpg)
Sistemi Operativi - Introduzione24
Regexp
• La shell espande le espressioni regolari secondo le sguenti regole:
– * una qualsiasi stringa
– ? un qualsiasi carattere singolo
– [...] uno qualsiasi dei caratteri in parentesi
![Page 25: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/25.jpg)
Sistemi Operativi - Introduzione25
Interpretazione - flusso
Word splitting
Brace expansion
Tilde expansion
Parameter expansionCommand expansionArithmetic expansion
Word splitting
Pathname expansion
Quote removal
per il nuovo comando si ripete l’espansione
Fatti solo per le parti non “quotate”
![Page 26: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/26.jpg)
Sistemi Operativi - Introduzione26
Esempio
• Come vengono espansi i seguenti comandi?
– so_es1=“~/so_es1”
– backup_dir=“backup_`date`”
– mkdir $so_es1/”$backup_dir”
– cp –r ~/so_es1/*.{c,h} ~/so_es1/”$backup_dir”
![Page 27: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/27.jpg)
Sistemi Operativi - Introduzione27
Indice• Introduzione
• Caratteristiche
• Espansione dei comandi
• Introduzione agli script
![Page 28: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/28.jpg)
Sistemi Operativi - Introduzione28
Script - introduzione• E’ possibile memorizzare in un file una serie di
comandi, eseguibili richiamando il file stesso• Esecuzione indiretta:
– source scriptname args
• Esecuzione diretta eseguendo lo script – ./scriptname args
– è necessario che il file abbia il permesso di esecuzione
– la prima riga del file inizia con #! seguita dal nome (con il path assoluto) della shell con cui si devono eseguire i comandi
![Page 29: Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica](https://reader033.vdocuments.site/reader033/viewer/2022052821/5542eb59497959361e8c582a/html5/thumbnails/29.jpg)
Sistemi Operativi - Introduzione29
Script - introduzione
#!/bin/bash
#so_es1=“~/so_es1” this is a comment
backup_dir=“backup_`date`”
mkdir ~/so_es1/”$backup_dir”
cp –r ~/so_es1/*.{c,h} ~/so_es1/”$backup_dir”