La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

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

Presentazioni simili


Presentazione sul tema: "Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica."— Transcript della presentazione:

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

2 Sistemi Operativi - Introduzione 2 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 ???

3 Sistemi Operativi - Introduzione 3 Programma 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

4 Sistemi Operativi - Introduzione 4 Indice Introduzione Caratteristiche Espansione dei comandi Scripting di base

5 Sistemi Operativi - Introduzione 5 Indice Introduzione Caratteristiche Espansione dei comandi Introduzione agli script

6 Sistemi Operativi - Introduzione 6 Introduzione 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 Programs Shell Unix kernel HW

7 Sistemi Operativi - Introduzione 7 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)

8 Sistemi Operativi - Introduzione 8 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)

9 Sistemi Operativi - Introduzione 9 Introduzione 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 10 Introduzione 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 11 Indice Introduzione Caratteristiche Espansione dei comandi Introduzione agli script

12 Sistemi Operativi - Introduzione 12 Caratteristiche e uso della shell BASH Parametri Completamento Pipeline Redirezione dell'I/O History Aliasing Gestione dei processi

13 Sistemi Operativi - Introduzione 13 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 dellultimo comando –variabili: contengono un valore non tipizzato.

14 Sistemi Operativi - Introduzione 14 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]} )

15 Sistemi Operativi - Introduzione 15 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.

16 Sistemi Operativi - Introduzione 16 Pipe Il collegamento stdout-stdin si chiama pipe e crea in memoria un canale diretto tra i due processi proc stdin(0) stdout(1) stderr(2) proc stdin stdout stderr

17 Sistemi Operativi - Introduzione 17 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

18 Sistemi Operativi - Introduzione 18 Redirezione dellI/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 text FINE comando &> file:(bash) stderr+stdout in file comando 2> file:(bash) stderr in file (1 è stdout)

19 Sistemi Operativi - Introduzione 19 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.

20 Sistemi Operativi - Introduzione 20 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

21 Sistemi Operativi - Introduzione 21 Indice Introduzione Caratteristiche Espansione dei comandi Introduzione agli script

22 Sistemi Operativi - Introduzione 22 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.

23 Sistemi Operativi - Introduzione 23 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 dellespressione aritmetica –parole contenenti *, ? e [ sono sostituite con il valore dellespressione regolare.

24 Sistemi Operativi - Introduzione 24 Regexp La shell espande le espressioni regolari secondo le sguenti regole: –*una qualsiasi stringa –?un qualsiasi carattere singolo –[...]uno qualsiasi dei caratteri in parentesi

25 Sistemi Operativi - Introduzione 25 Interpretazione - flusso Word splitting Brace expansion Tilde expansion Parameter expansion Command expansion Arithmetic expansion Word splitting Pathname expansion Quote removal per il nuovo comando si ripete lespansione Fatti solo per le parti non quotate

26 Sistemi Operativi - Introduzione 26 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

27 Sistemi Operativi - Introduzione 27 Indice Introduzione Caratteristiche Espansione dei comandi Introduzione agli script

28 Sistemi Operativi - Introduzione 28 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

29 Sistemi Operativi - Introduzione 29 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


Scaricare ppt "Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica."

Presentazioni simili


Annunci Google