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

Dimensione: px
Iniziare la visualizzazioe della pagina:

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

Transcript

1 Linguaggio di bash per esempi Tre modi per quotare quotare: signica trattare caratteri speciali come normali caratteri es. di aratteri speciali: $, blank, apici, 1. backslash: per quotare un solo carattere speciale 2. ppie virgolette: consente di scrivere stringhe contenenti più caratteri speciali; le variabili precedute da $ vengono sostituite dal loro valore 3. apici inversi: compaiono sul lato destro di un assegnamento, circondan un coman. Il coman viene eseguito e il suo valore memorizzato nella variabile sul lato sinistro Esempio Da linea di coman: > prova="ls -l" > echo $prova ls l > prova=`ls -l` > echo $prova total 2 drwxr--r-- utente1 gruppo1 pippo -rwxrwxrwx utente1 gruppo1 pluto 1

2 Introduzione agli esempi nei prossimi esempi supporremo di ver eseguire una medesima elaborazione su di un certo numero di le di dati contenuti in una stessa directory Vedremo diversi script che eseguono lo stesso compito, in modi via via più sosticati Useremo tali script per introdurre alcuni dei costrutti principali della programmazione di shell bash Esempio1: uso degli apici inversi DDir=../../Dati/DatiScript temp=`wc -l $DDir/dati1.raw` echo "numero linee di dati1.raw" temp=`wc -l $DDir/dati2.raw` echo "numero linee di dati2.raw" temp=`wc -l $DDir/dati2.raw` echo "numero linee di dati3.raw" Esempio2: comportamento di wc che legge da stdin DDir=../../Dati/DatiScript temp=`wc -l < $DDir/dati1.raw` echo "numero linee di dati1.raw" $temp temp=`wc -l < $DDir/dati2.raw` echo "numero linee di dati2.raw" $temp temp=`wc -l < $DDir/dati3.raw` echo "numero linee di dati3.raw" $temp 2

3 Istruzione if else if [ condizione ] istruzioni else istruzioni le parentesi [ ] sono obbligatorie come pure lo spazio fra esse e la condizione il ramo else è facoltativo Esempio 3: uso di un parametro e di -eq DDir=../../Dati/DatiScript if [ $1 -eq 1 ] valori: o numeri o stringhe temp=`wc -l $DDir/dati1.raw` echo "numero linee di dati1.raw" $temp temp=`wc -l $DDir/dati2.raw` echo "numero linee di dati2.raw" $temp temp=`wc -l $DDir/dati2.raw` echo "numero linee di dati3.raw" $temp else temp=`wc -l < $DDir/dati1.raw` echo "dati1.raw" $temp temp=`wc -l < $DDir/dati2.raw` echo "dati2.raw" $temp temp=`wc -l < $DDir/dati2.raw` echo "dati3.raw" $temp Operatori di confronto stringhe numeri interi = uguale!= diverso -gt -lt -ge -le -eq -ne maggiore di minore di maggiore uguale minore uguale uguale diverso sono operatori che richieno due operandi 3

4 Test su le sono operatori che richieno un solo operan -f il le esiste -s il le non è vuoto -r il le è leggibile -w il le è modicabile -x il le è eseguibile -d il le è una directory -h il le è un link simbolico Esempi: [ -r cumento.txt ] [ -h mieidati ] Composizione di condizioni AND [ condizione1 ] && [ condizione2 ] [ condizione1 ] [ condizione2 ] OR Esempio: uso di f e di condizioni composte if [ -d $1 ] echo $1 directory if [ -d $1 ] && [ -w $1 ] echo $1 directory scrivibile 4

5 For in for variabile in istruzioni lista_valori il corpo di istruzioni all interno di viene eseguito per tutti i valori contenuti nella lista lista_valori lista_valori può essere protta a seguito dell esecuzione di un coman Esempio4: uso di for in lista di tutti i le contenuti DDir=../../Dati/DatiScript in $DDir che hanno estensione raw; *.raw indica tutti i le che if [ $1 -eq 1 ] hanno estensione raw for myle in $DDir/*.raw temp=`wc -l $myle` echo "numero linee di dati1.raw" $temp else for myle in $DDir/*.raw temp=`wc -l < $myle` echo "dati2.raw" $temp Vantaggio: prescin dal numero di le effettivamente contenuti nella directory Altro esempio la lista è protta utilizzan il coman ls for myle in `ls` echo la directory contiene $myle 5

6 Uso di export e sottoscript export DDir=../../Dati/DatiScript if [ $1 -eq 1 ] sottoscript1 else sottoscript2 for myle in $DDir/*.raw temp=`wc -l $myle` echo "numero linee di dati1.raw" $temp for myle in $DDir/*.raw temp=`wc -l < $myle` echo "dati2.raw" $temp while nito=go occhio agli spazi!!! while [ condizione ] istruzioni while [ $nito!= quit ] echo ancora un giro! echo vuoi nire? [go/quit] read nito Let let let operan1 operatore operan2 variabile = espressione operatori: * + / - % consente di eseguire il calcolo di semplici espressioni in uno script di shell 6

7 Esempio let ripeti = 1 while [ $ripeti lt 3 ] echo hip hip let ripeti = ripeti + 1 echo hurra! usiamo let per incrementare una variabile di ciclo Esercizio: parte (a) datigrezzi home mieiscript datiela creare nella propria home directory tre sottodirectory: datigrezzi: conterrà i le da elaborare mieiscript: conterrà gli script realizzati datiela: conterrà i risultati dell elaborazione Esercizio: parte (a) home datigrezzi inserire in datigrezzi alcuni le di dati (di fantasia) da elaborare: potete copiare anche quelli usati la lezione scorsa mieiscript datiela copiare in mieiscript gli script usati la lezione scorsa per cercare e spezzare i record iniziali che vericavano un certo pattern in tre parti 7

8 Esercizio: parte (b) scrivere un programmino awk che: 1. legga in input i dati spezzati in prologo, nucleo, epilogo 2. restituisca in output quattro valori numerici: 1. il num. di record il cui nucleo inizia per la lettera a 2. il num. di record il cui nucleo inizia per la lettera b 3. il num. di record il cui nucleo inizia per la lettera c 4. il num. di record il cui nucleo inizia per la lettera d Esercizio: parte (c) scrivere uno script di shell che: 1. abbia denita una variabile DATI, il cui valore è la directory contenente i dati grezzi e una variabile ELA il cui valore è la directory nella quale verranno salvati i dati elaborati 2. esegue un ciclo su tutti i le contenuti in DATI e per cascuno di questi: 1. applica il programma awk scritto al passo (b) salvan il risultato in un le di output contenuto in ELA (attenzione, il risultato va aggiunto all eventuale contenuto precedente, il le non deve essere riscritto) secon un formato che deniremo 2. esegue lo script di shell contadati, che deniremo Esercizio: formato del le di output nome del primo le elaborato protto dallo script caso A: numero caso B: numero caso C: numero caso D: numero protto dal programma awk nome del secon le elaborato.. 8

9 Esercizio: contadati contadati restituisce il numero di righe (quindi di record) del le il cui nome è memorizzato nella variabile lecorrente, creata dallo script chiamante e da questo esportata 9

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica

GLI SCRIPT DI SHELL. Lucidi a cura di B.De Carolis. UNIX shell script UdB- Dip Informatica GLI SCRIPT DI SHELL Lucidi a cura di B.De Carolis Shell Unix - Linux comandi Interfaccia di alto livello tra utente e SO. Il processore interpreta e mette in esecuzione comandi da: 1) standard input o

Dettagli

Ridirezione su/da file

Ridirezione su/da file Combinare i comandi Ogni processo è associato a tre flussi di I/O standard: lo standard input dal quale riceve gli ingressi (normalmente la tastiera) lo standard output sul quale produce le uscite regolari

Dettagli

L utility Unix awk [Aho-Weinberger-Kernighan]

L utility Unix awk [Aho-Weinberger-Kernighan] L utility Unix awk [Aho-Weinberger-Kernighan] L utility awk serve per processare file di testo secondo un programma specificato dall utente. L utility awk legge riga per riga i file ed esegue una o più

Dettagli

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

Comandi filtro: sed. Se non si specificano azioni, sed stampa sullo standard output le linee in input, lasciandole inalterate. Comandi filtro: sed Il nome del comando sed sta per Stream EDitor e la sua funzione è quella di permettere di editare il testo passato da un comando ad un altro in una pipeline. Ciò è molto utile perché

Dettagli

NOZIONI BASE SHELL E SCRIPT LINUX

NOZIONI BASE SHELL E SCRIPT LINUX NOZIONI BASE SHELL E SCRIPT LINUX Aggiornato al 11 gennaio 2006 Ermes ZANNONI (ermes@zannoni.to.it) (http://www.zannoni.to.it) Indice : 1. Introduzione 2. La Shell 2.1 Comandida Shell 2.1.1 File e directory

Dettagli

Laboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 28 Marzo 2012

Laboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 28 Marzo 2012 Laboratorio di Elementi di Architetture e Sistemi Operativi Esercizi del 28 Marzo 2012 Esercizio 1. Scrivere uno script chiamato menu.sh che mostri il seguente menù a schermo: PROGRAMMI DISPONIBILI 1.

Dettagli

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

Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi Le funzioni di shell La bash supporta la programmazione procedurale e prevede la possibilità di definire funzioni utilizzando le sintassi alternative: function nome { lista-comandi } oppure nome ( ) {

Dettagli

Corso ForTIC C2 LEZIONE n. 8. Cos'è la shell Le variabili d'ambiente L'uso della shell per la realizzazione di semplici script

Corso ForTIC C2 LEZIONE n. 8. Cos'è la shell Le variabili d'ambiente L'uso della shell per la realizzazione di semplici script Corso ForTIC C2 LEZIONE n. 8 Cos'è la shell Le variabili d'ambiente L'uso della shell per la realizzazione di semplici script I contenuti di questo documento, salvo diversa indicazione, sono rilasciati

Dettagli

Corso di avvicinamento al Software Libero. Parte 3 Shell e Comandi

Corso di avvicinamento al Software Libero. Parte 3 Shell e Comandi Corso di avvicinamento al Software Libero Lunedi 6 Febbraio Parte 3 Shell e Comandi Formato comune dei comandi GNU/Linux-Unix comando -opz arg1 arg2... argn comando il comando che si intende dare corrisponde

Dettagli

Il sistema operativo UNIX/Linux. Gli script di shell

Il sistema operativo UNIX/Linux. Gli script di shell Il sistema operativo UNIX/Linux Gli script di shell Introduzione Le shell permettono La gestione di comandi su linea di comando La shell comprende automaticamente quando il costrutto termina e lo esegue

Dettagli

INTRODUZIONE ALLA PROGRAMMAZIONE IN KORN SHELL E.M.

INTRODUZIONE ALLA PROGRAMMAZIONE IN KORN SHELL E.M. INTRODUZIONE ALLA PROGRAMMAZIONE IN KORN SHELL E.M. DAVID KORN, BELL LABS, "THE KORN SHELL COMMAND AND PROGRAMMING LANGUAGE", PRENTICE HALL, 989 esecuzione: - dalla shell (prompt $) $primo il file deve

Dettagli

Fondamenti di Programmazione

Fondamenti di Programmazione Fondamenti di Programmazione Capitolo 2 Variabili, Espressioni e Comandi Prof. Mauro Gaspari: gaspari@cs.unibo.it Valori e Tipi Un valore (= value) è una delle entità fondamentali che i programmi sono

Dettagli

Metodi informatici della Fisica

Metodi informatici della Fisica Linux Bash C++ Root Metodi informatici della Fisica Lezione 7: script di shell Anno Accademico 2014 15 Andrea.Negri@unipv.it Script In informatica uno script è un programma scritto in un linguaggio che

Dettagli

I Metacaratteri della Shell Unix

I Metacaratteri della Shell Unix I Metacaratteri della Shell Unix La shell Unix riconosce alcuni caratteri speciali, chiamati metacaratteri, che possono comparire nei comandi. Quando l utente invia un comando, la shell lo scandisce alla

Dettagli

JAVASCRIPT. Tale file è associato alla pagina web mediante il tag