Script bash I file di comandi in Linux. BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”

Slides:



Advertisements
Presentazioni simili
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME HOSTTYPE Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Advertisements

© 2007 SEI-Società Editrice Internazionale, Apogeo Unità F2 Selezione.
Selezione A. Ferrari.
MATLAB.
MATLAB. Scopo della lezione Programmare in Matlab Funzioni Cicli Operatori relazionali Esercizi vari.
Dipartimento di Matematica
Shell Scripting. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure contenuti.
Informatica 2. Concetti fondamentali di programmazione Programmare vuol dire scrivere un algoritmo in un linguaggio che faccia funzionare un calcolatore.
Andrea Colombari, Carlo Drioli e Barbara Oliboni
Shell: variabili di sistema PATH HOME USER PWD SHELL HOSTNAME … Per visualizzare il valore di tutte le variabili dambiente si usa il comando set.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Dettagli e comandi avanzati Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX La shell Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi - Introduzione 1 Il sistema operativo UNIX Shell: uso avanzato e script Niccolò Battezzati Politecnico di Torino Dip. Automatica e Informatica.
Sistemi Operativi – La shell Salvatore Campagna Politecnico di Torino Dipartimento di Automatica.
Programmazione della shell pt.2
Script di shell (bash).
1 PROGRAMMAZIONE IN SHELL The Unix Programming Environment Kernigham - Pike.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Ancora sulla shell. Shell e comandi La shell e' un programma che interpreta i comandi dell'utente. I comandi possono essere dati da terminale, oppure.
Per gli approfondimenti sui vari punti affrontati oggi verrete indirizzati alle pagine degli “Appunti di informatica libera” ospitati nel sito:
CORSO AUTOGESTITO DI GNU/LINUX Riprendi in mano il TUO sistema Riprendi in mano il TUO futuro BASH SCRIPTING.
Breve introduzione alla Bourne Again Shell (bash) Parte II ● Francesco Rossi – –
Automatizzar e con Perl e Bash LinuxDay 2007 Torino Cascina Roccafranca Francesco Golia e Igor Pesando.
Parte 2 Programmare in Matlab – I Sommario: Introduzione: m-file Strutture condizionali e cicli –Istruzione “if” + Operatori logici in MatlabIstruzione.
1 Alberto Pollastro, !#/bin/bash Novara, GalLUG - Gruppo Utenti Linux Galliate - #!/bin/bash Alberto Pollastro.
Amministrazione di reti di calcolatori - Massimo Bertozzi Shell e scripting.
.  I tipi di dati non primitivi sono gli array, le struct e le union.  Gli array sono degli aggregati di variabili dello stesso tipo.  La dichiarazione.
Ambienti di Programmazione per il Software di Base
© 2007 SEI-Società Editrice Internazionale, Apogeo
A cura dell’Ing. Buttolo Marco
I/O redirection AND PIPES
VISUAL BASIC.
PROGRAMMAZIONE SHELL -
Terza Lezione → Navigare nel file System → parte 2
Tutorato Elementi di Informatica 2013
7. Strutture di controllo Ing. Simona Colucci
Script Marco D. Santambrogio –
PROGRAMMAZIONE BASH - INTRODUZIONE
IL CONCETTO DI ALGORITMO
I comandi.
Commenti Ogni riga che comincia con il simbolo # non viene letta dall’interprete per cui rappresenta un modo per commentare il listato # Questo è un esempio.
Ambienti di Programmazione per il Software di Base
I FILES AD ACCESSO SEQUENZIALE
PROGRAMMAZIONE BASH – ISTRUZIONE IF
CICLO DO – WHILE LINGUAGGIO C.
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Introduzione a JavaScript
Linguaggio C++ Selezione.
© 2007 SEI-Società Editrice Internazionale, Apogeo
Tipi di Shell sh – Bourne shell csh – C shell ksh – Korn shell
Programmazione e Laboratorio di Programmazione
Vari e semplici programmi.
Ambienti di Programmazione per il Software di Base
© 2007 SEI-Società Editrice Internazionale, Apogeo
Programmazione e Laboratorio di Programmazione
LINUX: struttura generale
La struttura dei primi programma in C
APPUNTI SUL LINGUAGGIO C Esercizi su File e Alberi Binari
Programmazione e Laboratorio di Programmazione
Processi decisionali e funzioni di controllo
Corso di Algoritmi e Strutture Dati APPUNTI SUL LINGUAGGIO C
Metacaratteri Il carattere * indica un tipo ed un numero qualsiasi di caratteri Per copiare tutti i file che iniziano per “hemo” nella directory dir %
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Programmazione e Laboratorio di Programmazione
Array e Stringhe Linguaggio C.
PowerShell di Windows PowerShell è un shell che mette a disposizione un prompt interattivo e un interprete a riga di comando , per le sue caratteristiche.
La programmazione strutturata
Programmazione e Laboratorio di Programmazione
Transcript della presentazione:

Script bash I file di comandi in Linux

BASH  Bourne Again Shell  Modalità interattiva o batch (file di comandi)  Ambiente di programmazione “completo”  Bash versione 2.03

File di comandi  sono file ASCII  iniziano con: #!/bin/bash  deve essere attribuito il permesso di esecuzione (chmod a+x )  per eseguire:./

Un primo esempio #!/bin/bash #Questa è una riga di commento #questo file di comandi visualizza #una frase echo Buon giorno a tutti

Metacaratteri  E’ possibile utilizzare metacaratteri  Es. #!/bin/bash #copia tutti i file doc e i file di due lettere che #iniziano con la lettera a nella directory #backup cp *.doc backup cp a?.txt backup

Operatori set $ls z[aeiou]* –visualizza tutti i file che iniziano con z e la cui seconda lettera è una vocale $ls z[!aeiou]* –visualizza tutti i file che iniziano con z e la cui seconda lettera è una vocale

Parentesi graffe  l’istruzione $echo c{ar,at,an,on}s visualizza cars cats cans cons

Caratteri speciali < ridirezione input > ridirezione output | pipe & esegue in background ‘ apice forte “ apice debole $ variabile {} inizio e fine blocco di comandi

Variabili bash  variabili stringa: –assegnamento  =  Es. nomefile=testo.txt –per ottenere il valore  $ Es. echo $nomefile oppure  ${ } Es. echo ${nomefile}

Variabili bash  Oltre a quelle definite dall’utente ne esistono molte predefinite (Es. $IFS o $BASH_VERSION)  $ seguito da un numero indica i parametri della riga di comando (0 il nome del file script)  $# contiene il numero dei parametri  $* è una stringa contenente tutti i parametri

Parametri della riga di comando #!/bin/bash echo “hai inserito $# parametri” echo “e sono $*.” Se il file si chiama prova e viene lanciato con il comando:./prova alfa beta gamma si otterrà il risultato: $hai inserito 3 parametri $e sono alfa beta gamma.

Codice di uscita  Ogni programma Linux quando termina restituisce un codice di uscita che normalmente è 0 se non ci sono stati errori  Viene memorizzato nella variabile $?  Anche gli script bash possono restituire un codice con: exit Es. exit 0

Liste di comandi condizionate  Per legare l’esecuzione di due comandi è possibile usare i due operatori: && - il secondo comando viene eseguito se e solo se il primo ha codice di uscita 0 || - il secondo comando viene eseguito se e solo se il primo ha codice di uscita diverso da 0

Esempio Liste  Le seguenti istruzioni cambiano la directory corrente, se questa operazione ha successo vi copiano un file: cd /home/gabri/Linux && cp file file.bak  Cambia la cartella corrente, scrive un messaggio di errore se la cartella non esiste cd /home/gabri || echo “Non c’e la cartella”

Lettura di variabili  Si usa il comando read  Es: #!/bin/bash echo “Inserisci x” read x echo “inserisci y” read y echo “x ha valore $x” echo “y ha valore $y”

Alternative if listacomandi1 then listacomandi2 [else listacomandi3] fi  la listacomandi2 viene eseguita se l’ultimo codice di ritorno di listacomandi1 è 0, altrimenti viene eseguita la listacomandi3

Esempio if #!/bin/bash if ls $1 then echo “Il file $1 esiste” if grep $2 $1 then echo “… e contiene la parola $2” else echo “… ma non contiene la parola $2” fi else echo “il file $1 non esiste!” fi Questo scrip controlla se esiste il file passato come primo argomento e se esiste guarda se contiene la stringa passata come secondo argomento, visualizza messaggi di errore altrimenti

Formato if generale if listacomandi then listacomandi [elif listacomandi then listacomandi] [else listacomandi3] fi

Condizione generica  Per usare un if con una generica condizione: if [ $1 = 1 ] then echo “hai inserito 1” fi  Attenzione ai blank!!!  -o fa l’or, -a fa l’and

Confronti fra interi oper.è vero se -eqi due numeri sono uguali -nei due numeri sono diversi -gtil primo è maggiore del -ltil primo è minore -geil primo è maggiore o uguale -ltil primo è minore o uguale

Test sui file oper.e’ vero se… -d filefile esiste ed è una directory -e filefile esiste -f filefile esiste ed è normale -r filesi può scrivere su file -s filefile esiste e non è vuoto -w filesi può scrivere su file -x filefile è eseguibile

Esempio #!/bin/bash USO=“Uso: copia file 1 file2” if [ $# -ne 2 ] ; then #verifica il nr. di argomenti echo “numero di argomenti non valido” echo $USO exit 1 fi if [ ! –e $1 ] ; then echo “$1 non esiste!” exit 2 fi if [ -e $2 –a ! –d $2 ] ; then echo “$2 esiste e non è una directory” exit 4 fi cp $1 $2 copia un file, se esiste, controllando di non sovrascriverne un’altro

Cicli: for for variabilefor in listadiparole do listacomandi done  il ciclo viene eseguito mentre variabilefor assume i valori contenuti in listadiparole

Cicli: for #!/bin/bash IFS=: for dir in $PATH do echo $dir if [ -w $dir ]; then echo “puoi scrivere in $dir” else echo “ non puoi scrivere in $dir” fi done

Cicli: while while listacomandi1 do listacomandi2 done  il ciclo viene eseguito mentre listacomandi1 restituisce codice 0

Cicli: while #!/bin/bash declare –i idx idx = 1 while [ $idx –ne 150 ] do cp filetesto filetesto.$idx idx=$idx+1 done

Cicli: until until listacomandi1 do listacomandi2 done  il ciclo viene eseguito mentre listacomandi1 restituisce codice diverso da 0