Il sistema operativo LINUX Script di Shell

Похожие документы
GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

Il sistema operativo UNIX/Linux. Gli script di shell

Sistemi Operativi Anno Accademico 2011/2012. Segnali: Interrupt software per la gestione di eventi asincroni

Shell di Linux e Comandi Utente

Gestione dei processi

Lavorare in ambiente UNIX. Prompt dei comandi (shell) Pipe e filtri (I/O) Tips and tricks

NOZIONI BASE SHELL E SCRIPT LINUX

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate.

VBA è un linguaggio di scripting derivato da Visual Basic, da cui prende il nome. Come ogni linguaggio ha le sue regole.

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Linguaggio di bash per esempi. Tre modi per quotare. Esempio. quotare: significa trattare caratteri speciali come normali caratteri

INTRODUZIONE ALLA PROGRAMMAZIONE IN KORN SHELL E.M.

L utility Unix awk [Aho-Weinberger-Kernighan]

I Metacaratteri della Shell Unix

PROMEMORIA: Come creare, compilare ed eseguire programmi in Fortran 95

5. La programmazione nella bash shell

I file Laboratorio di Linguaggi di Programmazione a.a. 2001/2002

Introduzione alla. Alessandra Giordani Lunedì 27 febbraio

La shell di Unix. Uso interattivo e scripting

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Programmazione Orientata agli Oggetti in Linguaggio Java

Metodi informatici della Fisica

UD4 - MATLAB. M-file. Efficienza degli algoritmi. Formati d uscita

Informatica Generale 1 - Esercitazioni Introduzione all uso della command-line shell

Sistemi Operativi. Bruschi Monga Re. Sincronizzazione con monitor pthreads. Shell Shell programming Esercizi I/O Esercizi Tabella riassuntiva

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi

PROGRAMMAZIONE CONSUNTIVA Codice Mod. RQ 23.2 Pag 1/5. Sistemi e Reti (articolazione Telecomunicazione) Classe

PSICOMETRIA. Esercitazione n.1. C.d.L. Comunicazione e Psicologia a.a. 2012/13

File System I parte. File System

Obiettivi d esame PHP Developer Fundamentals on MySQL Environment

I comandi del DOS. Come si fornisce un comando al DOS

Le command line di Java

GNU/Linux Concetti di base

IL CONCETTO DI FILE. È illecito operare oltre la fine del file.

Parte 9. Compendio shell - AA. 2012/ [P. Bruegel Children's games, 1560]

2011 Politecnico di Torino 1

Esercizio 2. Client e server comunicano attraverso socket TCP

Ambienti Operativi: Windows Powershell

Linux. Linux. Paolo Zatelli. Dipartimento di Ingegneria Civile ed Ambientale Università di Trento. Paolo Zatelli Università di Trento 1 / 24

Università degli Studi di Brescia

Gestione di files Motivazioni

Introduzione al Python

Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova. Sistemi Operativi. Gianluca Della Vedova.

Sistemi Operativi: Programmazione di Sistema

BASH. Breve introduzione alla programmazione della shell

Se state utilizzando la shell bash, ovvero la shell di riferimento per questo manuale, il terminale visualizzerà il seguente output:

Corso di Laboratorio di Sistemi Operativi

Cosa è importante: pom.xml Goal Plug-in Repository

PROGRAMMA DISCIPLINARE SVOLTO a. s / 2016

Assembler di Spim. Assembler di SPIM. Struttura di un programma assembler. Direttive

Sistemi operativi. Motivazione. Tipi di software. Sistemi operativi. Un sistema operativo (SO) e un insieme di programmi che gestiscono le funzioni

LINUX. Multitasking: possibilità di eseguire più programmi contemporaneamente

Sincronizzazione e comunicazione tra processi in Unix. usati per trasferire ad un processo l indicazione che un determinato evento si è verificato.

Gestione risorse (Windows)

CALCOLATORI ELETTRONICI II

ESERCIZIO 1 (Definizione funzioni passaggio parametri per copia)

Introduzione allo Shell Scripting. Domenico Delle Side

Sistemi Operativi. Interfaccia del File System FILE SYSTEM : INTERFACCIA. Concetto di File. Metodi di Accesso. Struttura delle Directory

Processi e Sincronizzazione. Laboratorio Software C. Brandolese M. Grotto

Sistemi Operativi. Esercitazione 12. Corso di Laurea Triennale in Ingegneria Informatica.

sed: editor non interattivo di file di testo (1974 nei Bell Labs come evoluzione di grep, Lee E. McMahon)

Laboratorio di Informatica Lezione 2

Editor vi. Editor vi

Introduzione ad UNIX e la Shell

3. La sintassi di Java

Operazioni di input e output in Fortran 90

SISTEMI OPERATIVI 14 settembre 2015 corso A nuovo ordinamento e parte di teoria del vecchio ordinamento indirizzo SR

Agent and Object Technology Lab Dipartimento di Ingegneria dell Informazione Università degli Studi di Parma. Ingegneria del software A.

Installazione di Ubuntu Mauro Piccolo

SHELL GNU/Linux Bash. Conoscere e configurare il proprio ambiente bash. Kernel speaks: dmesg

cambiare utente mediante il comando su verificare chi siete e su che dir state lavorando Chi siete e che dir? (Inserisci la risposta)

Introduzione allo Scripting Bash

Script di connessione a Internet

Corso di Laboratorio di Sistemi Operativi

PAD: istruzioni di laboratorio

Elementi di Informatica

Studente (Cognome Nome): Corso di Informatica Corso di Laurea in Ingegneria Gestionale a.a Primo scritto 11 Gennaio 2008

Транскрипт:

Il sistema operativo LINUX Script di Shell Giorgio Di Natale <dinatale@polito.it> Stefano Di Carlo <dicarlo@polito.it> Bartolomeo Montrucchio <montru@polito.it> Politecnico di Torino Dip. Automatica e Informatica Sistemi Operativi - Script di Shell 1 File di comandi (script) E possibile memorizzare in un file una serie di comandi, eseguibili richiamando il file stesso: Esecuzione indiretta: source <scriptname> <args> Nota: in tal caso non serve il permesso di esecuzione Esecuzione diretta eseguendo lo script E necessario che lo script abbia il permesso di esecuzione La prima riga del file inizia con #! seguita dal nome (con il path assoluto) della shell con cui si vogliono (funziona anche senza) eseguire i comandi Sistemi Operativi - Script di Shell 2

Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 3 Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 4

Variabili set myvar = ciao set myvar = Una prova set myvar = $othervar NOTA: le variabili di ambiente si settano con setenv myvar ciao, usare unset e unsetenv per cancellare myvar=ciao myvar= Una prova myvar=$othervar NOTA: per le variabili di ambiente usare poi export; unset per cancellare ambedue i tipi Sistemi Operativi - Script di Shell 5 Variabili predefinite Parametri della linea di comando $1 primo parametro $# numero di parametri $0 nome dello script di shell $* stringa con tutti i parametri $?var vale 1 se la variabile var è stata definita $#var il numero di elementi in var (per array) $? Exit code dell ultimo programma eseguito $$ PID del processo Sistemi Operativi - Script di Shell 6

Variabili vettoriali Sono previste variabili vettori: definizione enumerando i valori tra parentesi tonde accesso con la notazione del C (ossia parentesi quadre); è possibile specificare degli intervalli Sistemi Operativi - Script di Shell 7 Variabili vettoriali - Esempio set v = (a b c) echo $?v 1 echo $#v 3 echo $v[2] b echo $v[1-2] a b unset v echo $#v Undefined variable: v Sistemi Operativi - Script di Shell 8

Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 9 Caratteri particolari ( ) identifica una stringa. All interno vengono espanse le variabili myvar = Ciao echo Contenuto di myvar: $myvar Contenuto di myvar: Ciao Sistemi Operativi - Script di Shell 10

Caratteri particolari ( ) identifica una stringa. All interno non vengono espanse le variabili ATTENZIONE: accento acuto (es. perché) myvar = Ciao echo Contenuto di myvar: $myvar Contenuto di myvar: $myvar Sistemi Operativi - Script di Shell 11 Caratteri particolari (\) \ identifica il carattere di escape myvar = \$Ciao echo Contenuto di myvar: $myvar Contenuto di myvar: $Ciao Sistemi Operativi - Script di Shell 12

Caratteri particolari (`) `...` identifica la sostituzione di comando ATTENZIONE: accento grave (es. è) myvar = `echo $LOGIN_NAME` echo Contenuto di myvar: $myvar Contenuto di myvar: dinatale Sistemi Operativi - Script di Shell 13 Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 14

Condizioni ( cond ) $ cat test #!/bin/tcsh # Esempio di confronto (if) -> tcsh set str1 = "abc" set str2 = "abd" echo "str1 = $str1; str2 = $str2" if ($str1 == $str2) then echo "str1 uguale a str2" else echo "str1 diversa da str2" endif $./test str1 = abc; str2 = abd str1 diversa da str2 test expr oppure [ expr ] $ cat test #!/bin/bash # Esempio di confronto (if) -> bash str1="abc (NO spazi) str2="abd" echo "str1 = $str1; str2 = $str2" if test $str1 = $str2 (oppure if [ $str1 = $str2 ] (SPAZI [ ])) then echo "str1 uguale a str2" else echo "str1 diversa da str2" fi $./test str1 = abc; str2 = abd Sistemi Operativi - Script di Shell str1 diversa da str2 15 Confronto tra stringhe == uguale!= diverso = uguale!= diverso -n lunghezza > di 0 -z lunghezza = 0 Sistemi Operativi - Script di Shell 16

Confronto tra numeri == uguali >= maggiore o uguale <= minore o uguale!= diversi > maggiore < minore if ( $n1 >= $n2 ) then endif -eq uguali -ge maggiore o uguale -le minore o uguale -ne diversi -gt maggiore -lt minore if [ $n1 -ge $n2 ] then fi Sistemi Operativi - Script di Shell 17 -d directory -f file normale -r permesso di read -w permesso di write -x permesso di exec -z dim(file) > 0 -e il file esiste if ( -d $myvar ) then endif Operatori per file -d directory -f file normale -r permesso di read -w permesso di write -x permesso di exec -s dim(file) > 0 if [ -d $myvar ] ATTENZIONE agli spazi dopo e prima delle [ ] then fi Sistemi Operativi - Script di Shell 18

Operatori logici! NOT && AND OR! NOT -a AND -o OR Sistemi Operativi - Script di Shell 19 Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 20

L istruzione if if (espressione) then else if (espressione) then else endif if [ espressione ] then elif [ espressione ] then else fi Sistemi Operativi - Script di Shell 21 L istruzione for foreach myvar (elenco) end for myvar in elenco do done Sistemi Operativi - Script di Shell 22

L istruzione for - Esempi foreach x (1 2 3 4) echo $x end foreach x (`ls`) mv $x../backup end for x in 1 2 3 4 do echo $x done forx in `ls` do mv $x../backup done Sistemi Operativi - Script di Shell 23 L istruzione while while (espressione) end while [ espressione ] do done Sistemi Operativi - Script di Shell 24

L istruzione while - Esempio set ind= 0 while ($ind <= 15) touch xxx$ind set ind = `expr $ind + 1` end ind=0; while [ $ind -le 15 ] do touch "xxx$ind" ind=`expr $ind + 1` done ATTENZIONE agli spazi vicino all = e vicino alle [ ], nonché alle posizioni delle $ Sistemi Operativi - Script di Shell 25 L istruzione case switch(str) case str1 str2: breaksw default: breaksw endsw case str in str1) ;; str2 str3) ;; *) ;; esac Sistemi Operativi - Script di Shell 26

L istruzione case - Esempio switch ($1) case 01 1: echo Gennaio breaksw... default: echo Non valido breaksw endsw case $1 in 01 1) echo Gennaio ;; 02 2) echo Febbraio ;;... 12) echo Dicembre ;; *) echo Non valido ;; esac Sistemi Operativi - Script di Shell 27 Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 28

read var1 var2 varn #!/bin/bash echo n Scrivi qualcosa: (il n non va a capo) read one two other echo La prima parola è: $one echo La seconda parola è: $two echo Il resto della linea è: $other In tcsh echo -n "Scrivere due parole su di una riga: " set stringa = `cat` set stringa1 = `echo $stringa cut -f 1 -d " " -` echo "Prima parola: $stringa1" set stringa2 = `echo $stringa cut -f 2 -d " " -` echo "Seconda parola: $stringa2" Input interattivo Sistemi Operativi - Script di Shell 29 Cut, Paste Cut and paste permettono di tagliare ed incollare su file; sono molto utili negli script Cut è stato visto nel lucido precedente Paste permette di creare un file usando come colonne dati presi per esempio dal cut $ cal 1 2003 January 2003 Su Mo Tu We Th Fr Sa 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 $ cal 1 2003 cut -b1-2 > file_a $ cal 1 2003 cut -b19-20 > file_b $ paste -s file_a file_b Su 5 12 19 26 Sa 4 11 18 25 $ paste file_a file_b Su Sa 4 5 11 12 18 19 25 26 Sistemi Operativi - Script di Shell 30

Tr, Wc, Uniq, Pr tr permette di trasfomare un file agendo sui caratteri contenuti; ad es. tr a-z A-Z < a > b salva in b il file a dopo aver trasformato i caratteri minuscoli in maiuscoli wc (word count): conta il numero di byte (wc c nomefile), di linee (wc l), di parole (wc w) uniq da utilizzare in pipe ad es. con sort per eliminare i duplicati es:. sort uniq pr stampa i file di testo con un minimo di formattazione; in particolare pr n stampa aggiungendo i numeri di linea (utilissimo per stampare il codice) Sistemi Operativi - Script di Shell 31 Operazioni aritmetiche In bash $[expr] num1=5 num2=$[$num1*3+1] (NO spazi vicino all =) Altrimenti usare il comando expr In tcsh usare le espressioni come mostrato set num1 = 5 @ num2 = $num1 * 3 + 1 (@ può sostituire set, ma non vale il contrario) echo $num1 $num2 stampa -> 5 16 Sistemi Operativi - Script di Shell 32

Redirezione I/O con bash > stdout su file 2> stderr su file &> stdout+stderr su file >> stdout appeso a file < stdin da file Sistemi Operativi - Script di Shell 33 Modificatori di variabili per tcsh :r il nome di un file senza estensione :e l'estensione di un file :h la "testa" di un nome di file (il path) :t la "coda" di un nome di file (no path) Sistemi Operativi - Script di Shell 34

Esempio foreach i ($*) echo Estensione: $i:e echo Nome senza estensione: $i:r echo Path: $i:h echo Nome senza path: $i:t end exit 0 Sistemi Operativi - Script di Shell 35 Altro metodo un altro metodo (valido con ambedue i tipi di shell) è quello di usare basename e dirname $ cat test #!/bin/tcsh set i=0; foreach i (`ls $1/*`) echo "dirname $i = " `dirname $i` echo "basename $i = " `basename $i` end $ test uno dirname uno/a = uno basename uno/a = a dirname uno/b = uno basename uno/b = b $ ls -R uno/ uno/: a b Sistemi Operativi - Script di Shell 36

Indice Variabili Caratteri particolari Condizioni if, for, while, case Istruzioni particolari Segnali Sistemi Operativi - Script di Shell 37 Segnali I programmi possono ricevere dei segnali Es: quando si preme CTRL-C il programma viene interrotto. In realtà, quando il sistema operativo riceve dalla tastiera l informazione della pressione di CTRL-C, invia un segnale al processo Per inviare un segnale, si usa il comando kill kill -sig pid Sistemi Operativi - Script di Shell 38

Segnali possibili Signal Value Notes interrupt 2 generato quando si preme CTRL-C kill 9 terminazione forzata del processo alarm 14 generato alla fine della system call alarm() Sistemi Operativi - Script di Shell 39 Comportamento dei processi Quando un processo riceve un segnale, può: ignorare il segnale (tranne che per il segnale kill) accettare l azione di default del segnale (comportamento di default) eseguire del codice particolare per gestire quel segnale Sistemi Operativi - Script di Shell 40

Gestione dei segnali negli script Per gestire i segnali, si usa il comando trap: trap command signal_list esegue l azione espressa in command, quando si genera uno dei segnali nella lista trap signal_list ripristina il comportamento di default trap signal_list ignora il segnale Sistemi Operativi - Script di Shell 41 Esempio In una porzione dello script di seguito viene utilizzato un file temporaneo: trap rm -f /var/tmp/file.tmp; exit 0 2 touch /var/tmp/file.tmp # trap 2 # parte finale dello script Sistemi Operativi - Script di Shell 42