La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dellInformazione Politecnico di Milano © 2001- Carlo Brandolese Il Sistema Operativo UNIX.

Presentazioni simili


Presentazione sul tema: "CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dellInformazione Politecnico di Milano © 2001- Carlo Brandolese Il Sistema Operativo UNIX."— Transcript della presentazione:

1 CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dellInformazione Politecnico di Milano © Carlo Brandolese Il Sistema Operativo UNIX Seconda Parte Utilities e Scripting Docente: Carlo Brandolese Politecnico di Milano

2 Il Sistem Operativo UNIX - II© Carlo Brandolese- 2 - Sommario Prima Parte 1.Introduzione 2.La shell sh Variabili di ambiente Comandi 3.Il File System Introduzione Comandi 4.Processi Introduzione Comandi Seconda Parte 5. 5.Utilities Filtri Archiviazione Leditor vi 6. 6.Scripting Introduzione Argomenti Variabili Redirezione e pipelining Comandi Funzoni Comandi avanzati

3 Il Sistem Operativo UNIX - II© Carlo Brandolese- 3 - Sommario Seconda Parte 5. 5.Utilities Filtri Archiviazione Leditor vi 6. 6.Scripting Introduzione Argomenti Variabili Redirezione e pipelining Comandi Funzoni Comandi avanzati

4 Il Sistem Operativo UNIX - II© Carlo Brandolese- 4 - Introduzione Il sistema operativo UNIX si basa su file di testo Un sistema UNIX dispone di numerose utilities per la manipolazione dei file di testo Alla base di molte utilities vi sono i concetti di Regular Expression (RE) E una forma compatta per indicare insiemi di stringhe Si basa su una grammatica semplice costituita da Glob E una particolare RE usata per i nomi di file Quoting La shell espande alcuni caratteri speciali ( $, ~,...) Speciali virgolette prevengono o forzano lespansione

5 Il Sistem Operativo UNIX - II© Carlo Brandolese- 5 - Espressioni Regolari Caratteri speciali. Un carttere qualsiasi ^ Linizio di una linea $ La fine di una linea \ Escape. Toglie il significato speciale ad un carattere Stringhe, set e range xyx La stringa xyz stessa (literal) [xyz] Uno dei caratteri x, y o z (set) [^xyz] Tutti i cartteri tranne x, y e z (set) [s-e] Uno dei caratteri tra s ed e, secondo lordinamento ASCII (range)

6 Il Sistem Operativo UNIX - II© Carlo Brandolese- 6 - Espressioni Regolari Sottoespressioni (RE) Indica una espressione regolare. Le parentesi sono necessarie per usarla come sottoespressione Operatori (RE)*RE ripetuta 0 o più volte (RE)+RE ripetuta 1 o più volte (RE)?RE ripetuta 0 o 1 volte (RE1)|(RE2) RE1 o RE2 (RE1)(RE2) La concatenazione di RE1 e RE2

7 Il Sistem Operativo UNIX - II© Carlo Brandolese- 7 - Espressioni Regolari Se una RE è sovrapponibile a una stringa si dice che si ha un match Una RE rappresenta una classe di stringhe: [a-zA-Z] Stringhe alfabetiche [+-]?[0-9]+ Numeri decimali interi /\*.*\*/ Commento in C //.*$ Commento in C++ (bar)|(foo) Le due stringhe foo e bar ^[ \t]*$ Una linea vuota.* Qualsiasi stringa

8 Il Sistem Operativo UNIX - II© Carlo Brandolese- 8 - FIltri Un filtro è un programma che: Legge un file, una linea alla volta Elabora la linea Scrive il risultato, una linea alla volta Normalmente: Il file di ingresso è lo stdin o un file specificato come argomento Il file di uscita è lo stdout filtrostdoutstdin file

9 Il Sistem Operativo UNIX - II© Carlo Brandolese- 9 - Filtri: grep grep re [file...] Confronta ogni linea in ingresso con lespressione regolare re e mostra solo le linee che la contengono egrep ere [file...] Supporta anche le Extended Regural Expression (ERE) fgrep string [file...] Ricerca stringhe piuttosto che espressioni regolari agrep string Ricerca approssimata di stringhe

10 Il Sistem Operativo UNIX - II© Carlo Brandolese Esempio: grep grep T list STUFF THESIS grep –i ^T list THESIS tmp grep –n ^[TP].*S$ list 2:PAPERS 5:THESIS grep pts/[5-9] jobs 1917 pts/5 S 0:00 tcsh 2052 pts/6 S 0:00 nedit 2057 pts/8 S 0:00 xterm grep –v [0-9]* jobs PID TT S TIME COMMAND grep –c [-]?tcsh jobs 3 grep –n [a-z]+load$ jobs jobs:5:2057 pts/8 S 0:00 xload grep –c * jobs list Jobs:7 List:10 COURSES PAPERS PEOPLE STUFF THESIS bin download nsmail tmp upload PID TT TIME CMD 657 pts/4 0:00 -tcsh 1917 pts/5 0:00 tcsh 2052 pts/6 0:00 nedit 2057 pts/8 0:00 xload 2058 pts/11 0:00 tcsh 2071 pts/11 0:00 vi list jobs

11 Il Sistem Operativo UNIX - II© Carlo Brandolese Filtri: awk awk -f prg [file...] Legge una linea alla volta e la elabora come specificato dal programma prg Ogni linea viene divisa in token in corrispondenza degli spazi bianchi Un programma awk è una sequenza di coppie pattern- action, con la sintassi: /pattern/ { action } Le coppie vengono analizzate in sequenza, nellordine in cui sono scritte nel programma Quando una linea soddisfa il pattern (una RE), la corrispondente action viene esguita, altrimenti viene ignorata

12 Il Sistem Operativo UNIX - II© Carlo Brandolese Filtri: awk Il programma è scritto con una sintassi molto simile a quella del linguaggio C Si accede ai token tramite alcune variabili speciali $0 Lintera linea $n Il token n-esimo Lutente può utilizzare variabili proprie Il linguaggio awk dispone di diversi costrutti tipici if( expr ) stmt [else stmt] while( expr ) stmt for( stmt; stmt; stmt ) stmt print expr... exit

13 Il Sistem Operativo UNIX - II© Carlo Brandolese Esempio: awk H = 4 COURSES H = 11 PAPERS H = 6 PEOPLE T = 16 STUFF T = 10 THESIS H = 2 bin H = 12 download T = 22 nsmail T = 9 sources H = 18 tmp T = 8 upload R = 77 xmake R = 61 xwin list BEGIN { tot = 0; } /^H/ { if( $3 > 10 ) { tot = tot + $3; print $0; } END { printf TOTALE = %d\n, tot; } awk /^T/{print $4} list STUFF THESIS nsmail sources upload awk –f prog.awk list H = 11 PAPERS H = 12 download H = 18 tmp TOTALE = 41 Prog.awk

14 Il Sistem Operativo UNIX - II© Carlo Brandolese Filtri: sed sed –f script [file...] Esegue sequenze di comandi su singole linee Legge linput una linea alla volta Esegue i comandi specificati Stampa il risultato sullo standard output Un comando ha la forma: [addr1] [,addr2] command [options] In cui addr1, addr2 Specificano le linee su cui operare command E il comando da eseguire options Eventuali opzioni del comando

15 Il Sistem Operativo UNIX - II© Carlo Brandolese sed Alcuni semplici comandi di uso frequente sono: d Cancella la linea i\text Inserisce il testo text n Passa alla linea successiva P Copia la linea sullo standard output w file Copia la linea su file = Scrive il numero di linea sullo standard output q Termina lelaborazione dello script s/re/subst/ Sostituisce re con subst y/str1/str2/ Sostituisce i caratteri in str1 con i corrispondenti caratteri in str2

16 Il Sistem Operativo UNIX - II© Carlo Brandolese Esempio: sed COURSES PEOPLE STUFF THESIS download nsmail tmp list sed 2,5 d list COURSES download nsmail tmp sed s/S.S/--&/g list COUR--SES PEOPLE STUFF THE--SIS download nsmail tmp sed y/dnt/DNT/ list COURSES PEOPLE STUFF THESIS DowNloaD Nsmail Tmp

17 Il Sistem Operativo UNIX - II© Carlo Brandolese Altri filtri expand [file...] Sostituisce i caratteri di tabulazione con spazi wc [file...] Conta cartteri, parole e linee sort [file...] Ordina il contenuto di uno o più file uniq [file...] Elabora file ordinati e mostra solo le linee differenti diff file1 file2 Confronta due file e mostra le differenze

18 Il Sistem Operativo UNIX - II© Carlo Brandolese Altri filtri unix2dos, dos2unix Convertono alcuni caratteri speciali dal formato UNIX al formato DOS e vice versa strings [file...] Stampa le stringhe alfanumeriche presenti in un file binario cat [file...] Copia i file in ingresso sullo standard output head file... Mostra linizio di uno o più file tail file... Mostra le ultime linee di un file

19 Il Sistem Operativo UNIX - II© Carlo Brandolese Varie more file... Mostra uno o più file una pagina alla volta ed accetta alcuni comandi: SPACE Mostra una nuova pagina nRETURN Mostra le prossime n linee q Termina less file... È una versione di more più completa (non standard) b Mostra la pagina precedente

20 Il Sistem Operativo UNIX - II© Carlo Brandolese Gestione degli archivi UNIX dispone di utilities per la gestione di archivi: Creazione di archivi di file tar Compressone di file gzip gunzip compress uncompress, zcat Codifica uuencode uudecode crypt

21 Il Sistem Operativo UNIX - II© Carlo Brandolese Gestione degli archivi: tar tar c[v]f tarfile [file...] Aggiunge i file specifcati ad un archivio tar r[v]f tarfile [file...] Sostituisce i file specifcati in un archivio esistente tar t[v]f tarfile [file...] Mostra il contenuto di un archivio tar x[v]f tarfile [file...] Estrae il contenuto di un archivio

22 Il Sistem Operativo UNIX - II© Carlo Brandolese Esempio di creazione: tar find mypath mypath/a mypath/a/foo mypath/a/bar mypath/b mypath/b/bar mypath/b/frob mypath/foo tar cvf arch.tar mypath a mypath/ 0K a mypath/a/ 0K a mypath/a/foo 33K a mypath/a/bar 124K a mypath/b/ 0K a mypath/b/bar 12K a mypath/b/frob 1K a mypath/foo 66K a mypath/arch.tar 238K rm –r mypath ls –l -rw-rw-rw- 1 brandole Jul 31 13:27 arch.tar

23 Il Sistem Operativo UNIX - II© Carlo Brandolese Esempio di visualizzazione: tar tar tvf arch.tar drwxrwxrwx 472/41 0 Jul 31 13: mypath/ drwxrwxrwx 472/41 0 Jul 31 13: mypath/a/ -rw-rw-rw- 472/41 33 Jul 31 13: mypath/a/foo -rw-rw-rw- 472/ Jul 31 13: mypath/a/bar drwxrwxrwx 472/41 0 Jul 31 13: mypath/b/ -rw-rw-rw- 472/41 12 Jul 31 13: mypath/b/bar -rw-rw-rw- 472/41 1 Jul 31 13: mypath/b/frob -rw-rw-rw- 472/41 66 Jul 31 13: mypath/foo tar tvf arch.tar mypath/a drwxrwxrwx 472/41 0 Jul 31 13: mypath/a/ -rw-rw-rw- 472/41 33 Jul 31 13: mypath/a/foo -rw-rw-rw- 472/ Jul 31 13: mypath/a/bar ls -l -rw-rw-rw- 1 brandole Jul 31 13:27 arch.tar tar tvf arch.tar bar tar tvf arch.tar | grep bar -rw-rw-rw- 472/ Jul 31 13: mypath/a/bar -rw-rw-rw- 472/41 12 Jul 31 13: mypath/b/bar

24 Il Sistem Operativo UNIX - II© Carlo Brandolese Esempio di estrazione: tar tar xvf arch.tar x mypath, 0 bytes, 0 tape blocks x mypath/a, 0 bytes, 0 tape blocks x mypath/a/foo, 33 Kbytes, 66 tape blocks x mypath/a/bar, 124 Kbytes, 248 tape blocks x mypath/b, 0 bytes, 0 tape blocks x mypath/b/bar, 12 Kbytes, 24 tape blocks x mypath/b/frob, 1 Kbytes, 2 tape blocks x mypath/foo, 66 Kbytes, 132 tape blocks find mypath mypath/a mypath/a/foo mypath/a/bar mypath/b mypath/b/bar mypath/b/frob mypath/foo rm –r mypath tar xvf arch.tar mypath/b/bar find mypath mypath/b/bar

25 Il Sistem Operativo UNIX - II© Carlo Brandolese Compressione gzip file... Comprime uno o più file. I file originali sono rimossi gunzip file... Decomprime uno o più file. I file originali sono rimossi compress [file...] Comprime uno o più file. I file originali vengono rimossi uncompress [file...] Decomprime uno o più file. I file originali sono rimossi zcat [file...] Decomprime un file, mostrando il risultato a video

26 Il Sistem Operativo UNIX - II© Carlo Brandolese Leditor vi vi file... Carica i file specificati Questo editor è praticamente privo di interfaccia vi agisce su: Caratteri Parole: sequenze di caratteri delimitate da spazi Linee: sequenza di caratteri delimitata da Blocchi: Insieme di linee consecutive vi dispone di due modalità Comandi ex Comandi vi

27 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi ex :[, ] [ ] [ ] I campi hanno il seguente significato: Comando principale (1 carattere) Modificatore del comando (1 carattere) Argomenti e opzioni del comando, Indica un blocco di linee su cui operare I comandi devono essere terminati con un Lulrima linea del terminale mostra: In nome del file, il numero di linee ed il numero di caratteri I comandi ed mentre vengono digitati

28 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi ex :q Quit. Termina :q! Forza la terminazione :w Write. Salva il file :w! Forza il salvataggio :wq Salva e termina :w Salva il file con il nuovo nome f :, w Salva il blocco di linee specificato :x Write and quit. Salva e termina :x Salva il file con il nuovo nome f :e Edit. Carica un nuovo file :e Carica il file f :r Read. Carica un file nel file corrente :r Inserisce il file f alla posizione corrente

29 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi ex : Goto. Si sposta alla linea specificata : Va alla linea line :$ Va allultima linea del file :/ Substitute. Sostituisce un testo :/ /s// / Cerca la prima occorrenza della RE f e le sostituisce con r :/ /s/// Rimuove tutte le occorrenze della RE f : g Global substitute. Sostituisce un testo :g/ /s// / Cerca tutte le occorrenze della RE f e le sostituisce con r :g/ /s/// Rimuove tutte le occorrenze della RE f

30 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi vi [ ] I campi hanno il seguente significato: Comando principale Modificatore del comando principale Ripete il comando n volte Il testo da inserire I comadi vi devono essere terminati da un I comandi vi possono essere classificati in: Comandi di posizionamento Comandi di inserimento Comandi di cancellazione Comandi di modifica Comandi di ricerca

31 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi di posizionamento arr Spostano il cursore. Comandi alternativi: h Sinistra di n caratteri l Destra di n caratteri j Su di n linee k Giù di n linee w Word. Si sposta allinizio della parola successiva w Si sposta di n parole a destra b Back. Si sposta allinizio della parola precedente b Si sposta di n parole a sinistra ^ Si sposta allinizio della riga corrente $ Si sposta alla fine della riga corrente G Si sposta alla fine del file

32 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi di inserimento i, I Insert. Inserisce un testo i Inserice t alla posizione corrente i Inserice n volte t alla posizione corrente I Inserice t allinizio della linea corrente I Inserice n volte t allinizio della linea corrente a, A Append. Inserisce dopo la posizone corrente a Inserice t dopo la posizione corrente a Inserice n volte t dopo la posizione corrente A Inserice t alla fine della linea corrente A Inserice n volte t alla fine della linea corrente o, O Open. Inserisce una linea o Inserisce t nella linea precedente O Inserisce t nella linea successiva

33 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi di cancellazione x, X Delete character. Cancella un carattere xn caratteri a destra da quello corrente incluso Xn caratteri a sinistra da quello corrente escluso d Delete entity. Cancella una porzione di testo dd Linea corrente ddn linee a partire da quella corrente d$, D Dalla posizione corrente alla fine della linea d^ Dalla posizione corrente allinizio della linea dG Dalla linea corrente alla fine del file dH Dalla linea corrente allinizio della schermata dL Dalla linea corrente alla fine della schermata dwn parole successive dbn parole precedenti

34 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi di modifica c Change entity. Modifica il testo cc Sostituisce la linea corrente cw Sostituisce le n parole successive cb Sostituisce le n parole precedenti c$ Sostituisce fino alla fine della linea c^ Sostituisce fino allinizio della linea cG Sostituisce fino alla fine del file y Yank entity. Copia il testo yy Copia n linee yw Copia le n parole successive yb Copia le n parole precedenti y$ Copia fino alla fine della linea y^ Copia fino alla fine della linea yG Copia fino alla fine del file

35 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi di modifica e vari p Paste. Incolla il testo copiato r, R Replace. Sostituisce un carattere alla volta r Sostituisce il carattere corrente R Sovrascrive il testo seguente ~ Case. Modifica maiuscole e minuscole ~ Cambia il case del carattere corrente ~ Cambia il case dei seguenti n caratteri. Ripete lultimo comando. Ripete n volte lultimo comando

36 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi di ricerca / Find. Cerca il testo in avanti / Cerca lespressione regolare ere // Cerca la prossima occorenza in avanti ? Find. Cerca il testo allindietro ? Cerca lespressione regolare ere ?? Cerca la prossima occorenza allindietro n, N Next. Cerca loccorrenza successiva n Cerca la prossima occorrenza nella stessa direzione della ricerca N Cerca la prossima occorrenza nella direzione opposta a quella della ricerca

37 Il Sistem Operativo UNIX - II© Carlo Brandolese Sommario Seconda Parte 5. 5.Utilities Filtri Archiviazione Leditor vi 6. 6.Scripting Introduzione Argomenti Variabili Redirezione e pipelining Comandi Funzoni Comandi avanzati

38 Il Sistem Operativo UNIX - II© Carlo Brandolese Introduzione Uno script è una sequenza di comandi salvata su file Viene eseguito usando un opportuno comando source file Nelle shell csh, ksh, bash.... file Nella shell ksh Uno script può essere reso eseguibile Specificando linterprete che deve eseguire i comandi Aggiungendo i diritti di esecuzone cat myscript #!/bin/sh echo The script myscript has been executed exit ls –l myscript -rw-rw-rw- 1 brandole 631 Aug 7 07:59 myscript chmod a+x myscript ls –l myscript -rwxrxr-x 1 brandole 631 Aug 7 07:59 myscript

39 Il Sistem Operativo UNIX - II© Carlo Brandolese Argomenti Uno script eseguibile può accettare argomenti sulla linea di comando come un generico comando UNIX Gli argomenti vengono processati come segue: I glob vengono espansi in nomi di file Le variabili di ambiente vengono espanse La linea di comando espansa viene suddivisa in token, cioè sequenze di caratteri delimitate da spazi Gli argomenti terminano in corrispondenza di: Un carattere Un carattere di redirezione ( >, >>, <, <<, | ) Un carattere & per lesecuzione in background

40 Il Sistem Operativo UNIX - II© Carlo Brandolese Argomenti A volte è necessario imporre una interpretazione della linea di comando diversa da quella standard A tale scopo si ricorre al quoting Gli apici, o quotes, hanno il seguente significato... Double quote. Raccoglie più token in un unico argomento... Single quote. Previene la normale espansione dellargomento... Back quote. Espande largomento nel risultato della sua esecuzione. Largomento deve essere un comando UNIX valido

41 Il Sistem Operativo UNIX - II© Carlo Brandolese Argomenti: Esempi ( * ) myscript foo bar Argomento 1:foo Argomento 2:bar myscript $HOME $HOME $HOME Argomento 1: /home/edasrv/he/ric/brandole Argomento 2: /home/edasrv/he/ric/brandole Argomento 3: $HOME myscript * Argomento 1: FOO Argomento 2: bar... myscript echo $HOME Argomento 1: /home/edasrv/he/ric/brandole (*) Nella directory corrente sono presenti i file: foo FOO bar foobar foobar.c foobar.o

42 Il Sistem Operativo UNIX - II© Carlo Brandolese Argomenti Allinterno dello script ci si riferisce ai parametri in modo posizionale tramite le variabili $ $1 Primo argomento... $9 Nono argomento Per i successivi argomenti si usa il comando shift : Il comando assegna a $ il contenuto di $ Il contenuto di $1 va perduto myscript foo bar frob NORMAL: foo bar frob SHIFTED: foo bar frob myscript #!/bin/sh echo normal: echo $1 $2 $3 echo shifted: echo $1 shift echo $1 $2

43 Il Sistem Operativo UNIX - II© Carlo Brandolese Variabili In uno script si possono definire variabili locali Il nome di una variabile deve essere una sequenza alfanumerica e deve iniziare con una lettera Si accedere al valore di una variabile mediante il processo detto substitution var Indica la variabile var $var Indica il valore della variabile var ${var} Indica il valore della variabile var ${var:-word} Se var esiste e non è vuota indica il valore di var, altrimenti indica la stringa word Alcune shell dispongono di variabili strutturate

44 Il Sistem Operativo UNIX - II© Carlo Brandolese Variabili: Substitution Si considerino alcuni esempi Se la variabile var contiene la stringa foo : var (var non è un comando) $varfoo (substitution) $varbar ( varbar non esiste) ${var}barfoobar (substitution) X${var}XXfooX (substitution) ${var:-void}foo ( var è non vuota) ${xxx:-void}void ( xxx non è definita)

45 Il Sistem Operativo UNIX - II© Carlo Brandolese Variabili: Variabili speciali Alcune variabili hanno un significato speciale: $0 Nome con cui lo script è stato invocato $# Numero di argomenti con cui lo script è invocato $? Valore di ritorno dellultimo comando eseguito $$ Indica il process id (pid) della shell corrente $! Indica il process id (pid) dellultimo comando eseguito in background myscript foo bar & [1] SCRIPT: myscript ARG NUM: 2 ARG VAL: foo bar PID: LAST EXIT VALUE: 0 [1] Done myscript foo bar myscript #!/bin/sh echo SCRIPT: $0 echo ARG NUM: $# echo ARG VAL: $1 $2 $3 $4 echo PID: $$ echo LAST EXIT VALUE: $?

46 Il Sistem Operativo UNIX - II© Carlo Brandolese Redirezione e Pipelining I filtri e altri comandi UNIX: Leggono lingresso dallo standard input stream 0 Scrivono luscita sullo standard output stream 1 Scrivono i messaggi di errore sullo standard error stream 2 Spesso è necessario leggere e scrivere file Ciò è possibile tramite La redirezone dellinput/output Il pipelining di più comandi

47 Il Sistem Operativo UNIX - II© Carlo Brandolese Redirezione e Pipelining Redirezone dellinput/output Un file viene letto al posto dello standard input Un file viene scritto al posto dello standard output Un file viene scritto al posto dello standard error Pipelining Luscita di un comando viene usata come ingresso al comando seguente nella pipeline Lingresso di un comando viene prelevato dalluscita del comando precedente nella pipeline

48 Il Sistem Operativo UNIX - II© Carlo Brandolese Redirezione e Pipelining Redirezione dello standard output: >file Verso il file file. Sovrascrive >>file Verso il file file. Aggiunge alla fine Redirezione dello standard input: file Verso il file file. Sovrascrive 2>>file Verso il file file. Aggiunge alla fine

49 Il Sistem Operativo UNIX - II© Carlo Brandolese Redirezione e Pipelining Oltre agli stream standard 0, 1 e 2 ogni shell dispone degli stream generici numerati da 3 a 255 La redirezione può essere effettuata anche da e verso questi stream Redirezione generica n>file Lo stream n verso il file file. Sovrascrive n>>file Lo stream n verso il file file. Aggiunge alla fine n>&m Lo stream n verso lo stream m

50 Il Sistem Operativo UNIX - II© Carlo Brandolese Redirezione e Pipelining Una pipeline è una sequenza di comandi: Separati dal carattere | Eseguiti in cascata La seguente sintassi indica una pipeline: cmd1 | cmd2 |... cmdN In questo caso vengono usati lo standard input e lo standard output dei comandi La pipeline mostrata è equivalente ai comandi: cmd1 > t2; cmd2 t3;... cmdN < tN;

51 Il Sistem Operativo UNIX - II© Carlo Brandolese Redirezione e Pipelining A volte è necessario utilizzare lo standard error Per usare lo standard error si usa la forma:... | cmd1 2>&1 | cmd2 |... In questo caso: Lo stream 2 (standard error) del comando cmd1 viene rediretto sullo stream 1 (standard output) Lo standard output viene usato nella pipe come standard input del comando cmd2

52 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi Un comando può essere: Un comando semplice Una lista semplice Una lista condizionata Un comando semplice ha la forma: cmd; Il comando cmd viene esguito in foreground (in modo sincrono) ed il valore di uscita viene salvato nella variabile $? cmd & Il comando cmd viene esguito in background (in modo asincrono)

53 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi Una lista semplice di comandi ha la forma: cmd1;cmd2;... I comandi vengono eseguiti in sequenza, ed il valore ritornato dallultimo è salvato in $? Una lista condizionata di comandi ha la forma: cmd1&&cmd2... Il comando cmd1 viene eseguito. Il comando cmd2 viene eseguito solo se il valore di ritorno di cmd1 è uguale a zero cmd1||cmd2... Il comando cmd1 viene eseguito. Il comando cmd2 viene eseguito solo se il valore di ritorno di cmd1 è diverso da zero

54 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi: for for var [ in word... ] do list done; La variabile var assume i valori successivi della lista di stringhe word ed i comandio in list sono eseguiti Se la lista di stringhe viene omessa, var assume il valore dei vari parametri sulla linea di comando scr1 n = 1 n = 2 n = 3 n = 4 scr2 foo bar frob args: foo bar frob arg = foo arg = bar arg = frob scr1 #!/bin/sh for n in do echo n = $n; done; scr2 #!/bin/sh echo args: $1 $2 $3 for n do echo arg = $n; done;

55 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi: test test condition [ condition ] Esegue il test specificato da condition La seconda forma è più sintetica e più leggibile. Le parentesi quadre indicano i caratteri [ e ] Test su stringhe: -z s Vero se la lunghezza di s è uguale a zero -n s Vero se la lunghezza di s è diversa da zero s = t Vero se le stringhe s ed t sono uguali s != t Vero se le stringhe s ed t sono diverse

56 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi: test Test su file: -f file Vero se file esiste -r file Vero se file esiste ed è leggibile -x file Vero se file esiste ed è scrivibile -w file Vero se file esiste ed è eseguibile -d file Vero se file esiste ed è una directory Test su numeri interi: n1 –eq n2 Vero se n1 = n2 n2 –ne n2 Vero se n1 != n2 n1 –gt n2 Vero se n1 > n2 n1 –ge n2 Vero se n1 >= n2 n1 –lt n2 Vero se n1 < n2 n1 –le n2 Vero se n1 <= n2

57 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi: test Operatori logici ! c1 Vero se la condizione c1 è falsa c1 –a c2 Vero se la entrambe le condizioni c1 e c2 sono vere c1 –o c2 Vero se la almeno una delle condizioni c1 e c2 è vera

58 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi: if if cl; then tl; [ else el; ] fi; La lista cl è eseguita ed è calcolato il valore di uscita Se il valore di uscita è zero viene esguita la lista tl Se il valore di uscita non è zero viene esguita la lista el La lista cl tipicamente è un comando test ls -F foo bin/ scr1 str is foo foo exists bin is dir int=5 and str=foo foo exists or str=foo scr1 #!/bin/sh str=foo int=5 if [ -z $str ]; then echo str is null; fi; if [ $str = foo ]; then echo str is foo; fi; if [ -f foo ]; then echo foo exists; fi; if [ -d bin ]; then echo bin is dir; fi; if [ $int -eq 0 ]; then echo int is zero; fi; if [ $int -eq 5 –a $str = foo ]; then echo int=5 and str=foo; fi; if [ -f foo –o str != foo ]; then echo foo exists or str=foo; fi;

59 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi : while e case while cl; do bl; done; La list cl è eseguita ed è calcolato il valore di uscita La lista bl è eseguita finché il valore di uscita è zero Se il valore di uscita non è zero, il ciclo termina case var in pattern1 ) list;; pattern2 ) list;;... esac; La variabile var viene confrontata successivamente con le stringhe pattern1, pattern2 ecc. Quando viene rilevata uguaglianza viene esguita la lista list corrispondente al pattern.

60 Il Sistem Operativo UNIX - II© Carlo Brandolese Funzioni name () { list; } Definisce una funzione di nome name Il corpo della funzione è costituito dalla lista list La funzione deve essere definita prima di essere usata Nel corpo della funzione, le variabili speciali $1,... $9 assumono il valore degli argomenti con cui la funzione è stata chiamata name arg1 arg2... Invoca la funzione name passandole gli argomenti arg1, arg2, ecc. Se il nome name è uguale a quello di un comando esterno o interno, il comando originale non è più accessibile

61 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi avanzati Sono tipicamente usati nella seguente forma: var=command arg [...] expr Valuta lespressione intera expr e ritorna il risultato regex –v str p1 t1 [[p2 t2]...] Confronta str con i pattern p1, p2,... Un pattern è una forma modificata di ERE in cui le sottoespressioni sono etichettate con $0,..., $9 Quando trova un match Stampa il template t corrispondente Nel template, le variabili $m0,..., $m9 vengono espanse nella corrispondente sottoespressione

62 Il Sistem Operativo UNIX - II© Carlo Brandolese Comandi avanzati basename file Ritorna il nome del file file privato del path dirname file Ritorna il path di file privato del nome del file getopts optstring var Analizza gli argomenti sulla linea di comando Opzioni del tipo: -opt Ritorna in var il carattere opt Opzioni del tipo: -opt value Ritorna in var il carattere opt Assegna alla variabile OPTARG il valore value


Scaricare ppt "CEFRIEL Consorzio per la Formazione e la Ricerca in Ingegneria dellInformazione Politecnico di Milano © 2001- Carlo Brandolese Il Sistema Operativo UNIX."

Presentazioni simili


Annunci Google