Keep it simple, stupid!

Documenti analoghi
Corso di Laboratorio di Sistemi Operativi

Shell: variabili di sistema. Per visualizzare il valore di tutte le variabili d ambiente si usa il comando set

GLI SCRIPT DI SHELL. Shell

Shell BASH. Variabili Redirezione

L utility Unix awk [Aho-Weinberger-Kernighan]

CORSO LINUX PER LA CERTIFICAZIONE LPI ESSENTIALS

Shell scripting. Turing completi approccio procedurale non tipati (l'unico tipo disponibile è la stringa) interpretati

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 2 10/10/2012 Lezione 3 17/10/2012

Controllo di flusso negli script: if-then-else

Lezione 3: Programmazione della Shell di Unix

Lezione 5: Controllo del flusso e costrutti avanzati

Esecuzione di script

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

Esempio 1. Creare uno script (file comandi) che abbia la sintassi:

G. Schmid Unix shell. Unix shell

Il sistema operativo LINUX Script di Shell

Manipolazioni elementari di flussi di testo strutturati

Il sistema operativo UNIX/Linux Le shell

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

Il sistema operativo UNIX/Linux. Le shell Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Script di shell (bash)

Corso Linux BASH. Realizzazione di Script Mediante la BASH Bourne Again Shell

Manipolazione di testo

Introduzione a UNIX shell e file comandi

Il sistema operativo UNIX/Linux. Gli script di shell Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

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

Sviluppare un programma in FORTRAN

- comando sort: con chiavi di ordinamento -

Introduzione all ambiente MATLAB. Richiami II. Calcolo Numerico - A.A. 2008/09

Lab. di Sistemi Operativi - Lezione in aula - a.a. 2012/2013

Programmazione Batch

Il sistema operativo UNIX/Linux. Gli script di shell

Lab. di Sistemi Operativi - Esercitazione n 2 - a.a. 2012/2013

Introduzione a UNIX shell e file comandi

Lab. di Sistemi Operativi

Programmazione web lato client con JavaScript. Marco Camurri 1

Laboratorio di sistemi operativi A.A. 2010/2011 Gruppo 2 Gennaro Oliva 4 Gli script di shell. #!/bin/bash

IL TEOREMA DI BOEHM-JACOPINI

File binari e file di testo

Lezione 2: Comandi avanzati della Shell di Unix

Bash: history list (I)

Il sistema operativo LINUX La shell

5. La programmazione nella bash shell

DIPARTIMENTO DI ELETTRONICA, INFORMAZIONE E BIOIGNEGNERIA. INFORMATICA B Ingegneria Elettrica. Script in Matlab

Rappresentazione degli algoritmi

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

Codice Corso: UNX010. Durata: 3 giorni

Laboratorio di Internet I Il sistema operativo Linux

Algoritmi, Strutture Dati e Programmi. UD 2.b: Programmazione in Pascal

Il sistema operativo LINUX Esercitazione 3. Esercizio 1. Esercizio 2. Esercizio 5 - Soluzione. Il sistema operativo LINUX Esercitazione 4.

E' un interprete di comandi: legge ciascuna linea di comando, la interpreta e la esegue

Linux e la shell Bash

L ambiente UNIX/Linux. I filtri Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

MasterIT - Scripting Es1. Sh, Csh, Grep, Sed, Awk

Costrutti condizionali e iterativi

La Shell: esecuzione dei comandi

L utility Unix awk [Aho-Weinberger-Kernighan]

Lab. di Sistemi Operativi - Esercitazione - Comandi Shell

Ridirezione su/da file

Metodi di Analisi dei Dati Sperimentali. AA 2009/2010 Pier Luca Maffettone. Elementi di Matlab

La shell di Unix. Uso interattivo e scripting

Elaborato Shell. Elementi di architettura e sistemi operativi 2016/2017

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

UNIX. UNIX: history. shell come interprete. Unix shell. The layers of a UNIX system.

Programmazione a blocchi. Algobuild Prof. Sergio Roselli

Corso di Fondamenti di Informatica

Shell: csh e tcsh. Di shell non ne esiste una sola... Per il momento... Funzioni della shell. In cosa si differenziano?

Script in Matlab. INFORMATICA B + C (sezione L-Z) Ingegneria Elettrica, Chimica e dei Materiali

Il sistema operativo UNIX/Linux. Soluzione di problemi mediante script Stefano Quer Dipartimento di Automatica e Informatica Politecnico di Torino

Espressioni Regolari. Giancarlo Massidda

Evoluzione del FORTRAN 14/03/2016. LABORATORIO DI PROGRAMMAZIONE Corso di laurea in matematica 15 IL LINGUAGGIO FORTRAN

Linguaggio C - le strutture di controllo: sequenza, selezione, iterazione

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2015/2016

Introduzione a. Funzioni di Ingresso e Uscita. Compilazione

Esercizi con grep, sed

Laboratorio Progettazione Web Il linguaggio PHP Le Istruzioni. Andrea Marchetti IIT-CNR AA 2014/2015

scrivere window.alert(). 2 Nell esempio sarebbe scritto solo var hello, senza pertanto attribuire alla variabile hello alcun valore

I CARATTERI E LE STRINGHE

Senza Soluzioni. Può un altro utente non appartenente al gruppo di mgiorgio, eseguire gli stessi comandi?

Laboratorio di Algoritmi e Strutture Dati

Modulo 2 Appendice 4 Programmazione in linguaggio script

Introduzione alla Programmazione in Bash. E.Mumolo, DIA

Foglio Elettronico Lezione 1

Fondamenti di Informatica 6. Algoritmi e pseudocodifica

Valori Alfanumerici. Informatica di Base -- R.Gaeta 1

Processore Danilo Dessì. Architettura degli Elaboratori.

JavaScript Core Language. Prof. Francesco Accarino IIS Atiero Spinelli Sesto San Giovanni via leopardi 132

Laboratorio Progettazione Web Il linguaggio PHP Lezione 6. Andrea Marchetti IIT-CNR 2011/2012

Programmazione con il linguaggio LibreOffice Basic

Javascript. - Corso Web Design - Media Dream Academy. Stefano Gaborin

Fogli Elettronici. Idoneità Informatica Prof. Mauro Gaspari

Definizione di processo Informalmente, il termine processo viene usato per indicare un programma in esecuzione RIENTRANZA DELLO SHELL

VBA Principali Comandi

BREVISSIMA GUIDA AL SISTEMA UNIX / LINUX

I FILTRI SED, GREP e FIND SED

Mirko Mariotti. March 9, 2009

Introduzione al MATLAB c Parte 3 Script e function

La shell di Unix. Uso interattivo e scripting

Matlab 5. Funzioni. Slide basate sul corso di C. Blundo. A.A. 2010/ GPersiano. Laboratorio di Informatica per Fisici 1

CORSO DI LABORATORIO DI INFORMATICA

Transcript:

Keep it simple, stupid! La filosofia alla base dei programmi Unix (solitamente non grafici) è semplice: ogni programma è specializzato per uno scopo ben preciso; funzionalità avanzate si ottengono dalla combinazione dei programmi semplici. tramite i meccanismi messi a disposizione dalle shell dei sistemi Unix (redirezione dell'input ed dell'output, pipeline) è possibile utilizzare i programmi quasi come dei mattoncini Lego, per costruire un sistema più complesso!

Variabili Create al volo senza dichiarazione nomevariabile=valore Accesso al valore della var: premettendo un $ : echo $nomevariabile Alcune variabili sono fondamentali per il sistema: PATH, PS1, HOME, MAIL Si possono visualizzare con set Per permettere ad altri programmi (avviati dalla stessa shell) di accedere ad una variabile, va esportata. export nomevariabile

Alias Scorciatoie utili per evitare di scrivere comandi complessi. alias nomealias=comandi alias ll= ls -l alias ls= ls -l Come le variabili, non vengono salvati alla fine della sessione di lavoro. Per cancellare un alias unalias nomealias unalias -a cancella tutti gli alias

Metacaratteri Alcuni caratteri hanno un significato particolare per la shell: sono detti metacaratteri. ad esempio < > *? [ ] ; & È possibile comunque togliere significato ai metacaratteri, ed utilizzarli come caratteri normali. Es: #!/bin/sh echo $1 $./prova saluti&baci saluti [2] 3887 bash: baci: command not found [2] Done./prova saluti

Quoting Facendo precedere il carattere di escape \ ad un carattere qualsiasi, questo perde il suo significato particolare. \$, \\ Racchiudendo una sequenza di caratteri tra apici singoli, viene preservato il significato letterale di ogni carattere. Racchiudendo una sequenza di caratteri tra apici doppi, viene preservato il significato letterale di ogni carattere AD ECCEZIONE di $, ` e \

Quoting In questo modo è comunque possibile (con i doppi apici) inserire delle variabili ed espanderne il valore. $ var1="provola provoletta" $ echo $var1 provola provoletta $ echo var1 contiene $var1 var1 contiene provola provoletta $ echo "var1 contiene $var1" var1 contiene provola provoletta $ echo 'var1 contiene $var1' var1 contiene $var1 $ echo var1 contiene \$var1 var1 contiene $var1

Apice inverso Carattere ` (apice inverso): se si inserisce al suo interno un comando (semplice o composto), questo viene eseguito e sostituito dal relativo output. $ ls -hs prova.txt 4,0K prova.txt $ echo "informazioni sul file: ls -hs prova.txt " informazioni sul file: ls -hs prova.txt $ echo "informazioni sul file: `ls -hs prova.txt` " informazioni sul file: 4,0K prova.txt $ echo "informazioni sul file: $(ls -hs prova.txt) " informazioni sul file: 4,0K prova.txt

Script Commenti: carattere # La prima riga contiene normalmente un commento speciale (bang path). #!/bin/sh #!/bin/bash --login È il nome del programma (e relativi parametri) che viene richiamato per eseguire lo script. Meccanismo generale: #!/usr/bin/perl #!/usr/bin/pyhthon

Parametri La shell mette a disposizione degli script una serie di parametri predefiniti, identificati da $ seguito da un'altro carattere. $n (n intero): l'n-mo parametro passato da linea di comando allo script. Se n contiene più di 2 cifre, va racchiuso tra { } (ad es. ${12} ). $0: il nome dello script. $* : se utilizzato all'interno di apici doppi, un'unica parola contenente tutti i parametri passati a linea di comando, separati dal contenuto del primo carattere della variabile d'ambiente IFS. IFS: contiene normalmente <SP><HT><LF>

Parametri $@ : comportamento simile a quello di $*; a differenza di quest'ultimo, se utilizzato all'interno di apici doppi, rappresenta una lista di parole, una per ogni parametro. $# : numero dei parametri passati. shift num: trasla i parametri da [$#-num+1, $#] in [$1, $#-num]. ad es. con 5 parametri, shift 2 sposta il 3 al posto del 1, il 4 al posto del 2, il 5 al posto del 3, cancella gli altri due, e pone $# pari a 3.

if Permette di specificare else if in cascata. if list1 then comandi [elif list2 then comandi]... [else comandi] fi

Condizioni Quali sono le condizioni utilizzabili all'interno dell'if? Dato un qualsiasi comando (o blocco di comandi), si considera il valore restituito. Se questo è 0, la condizione è falsa; Altrimenti, la condizione è vera. Quindi list1 può essere semplicemente una serie di comandi, legati da &&,, & (e separati da <newline> o da ;).

Condizioni #!/bin/sh if ls $1 &>/dev/null then echo "trovato" fi /dev/null: dispositivo speciale, utile tra le altre cose per sopprimere l'output di un programma (come in questo caso).

Espressioni aritmetiche Comando interno let: permette di eseguire espressioni aritmetiche. Sono supportati i normali operatori aritmetici (+, -, *, /, **, >>, >>, &, ^, ) e logici (&&, ). Possono essere utilizzate come espressioni condizionali, delimitando le espressioni con (( espressione ))

Espressioni condizionali Sono delimitate da da [... ] (equivalente al comando interno test). Condizioni classiche (==,!=, >, <) Altre condizioni sulle stringhe: -z stringa (controlla se stringa vuota) Condizioni sui file -a file (controlla se il file esiste) -d file (il file esiste ed è una cartella) file1 -nt file2 (file1 modificato dopo file2)...

for Doppia sintassi for variabile [in lista] do comandi done Se in lista è omessa, vengono utilizzati i parametri posizionali. for ((expr1; expr2; expr3)) do comandi done

for #!/bin/bash listafile=`ls` for nomefile in $listafile do echo file: $nomefile done

while/until Condizioni di uscita simmetriche while listacomandirestituiscevero do comandi done until listacomandirestituiscefalso do comandi done

while/until #!/bin/bash while pidof $1 &>/dev/null do sleep 5 done echo Comando completato play suono.wav

Case La parola specificata viene confrontata con i vari modelli. Se viene trovata una corrispondenza, viene eseguita la lista di comandi corrispondente, e non vengono eseguiti altri controlli.. *): selezionato se nessun modello corrisponde. case parola in [modello [ modello]... ) lista_di_comandi ;; ]... [*) lista_di_comandi ;; ] esac

Case modello è un pattern (può contenere caratteri jolly come * o? ). #!/bin/bash pattern=`file $1` case $pattern in *:*html*) lynx $1 ;; *:*ASCII*) vi $1 ;; *:*mp3*) mpg123 $1 ;; *) echo "Non riconosco il tipo di $1" ;; esac

Case: script di avvio #!/bin/sh test -f /usr/sbin/sshd exit 0 case $1 in start) echo -n Starting sshd: sshd /usr/sbin/sshd echo. ;; stop) echo -n Stopping sshd: sshd kill `cat /var/run/sshd.pid` echo. ;;

Case: script di avvio restart) echo -n Stopping sshd: sshd kill `cat /var/run/sshd.pid` echo. echo -n Starting sshd: sshd /usr/sbin/sshd echo. ;; *) echo "Usage:/etc/init.d/sshd start stop restart" exit 1 ;; esac

funzioni Più subroutine che funzioni. [function] nomefunzione() { corpofunzione } In questo caso, le variabili $1, $2..., (ma non $0), sono relative non al programma principale, ma rappresentano i parametri della funzione. Condividono le variabili con il programma principale. Variabili locali: direttiva local.

funzioni: esempio #!/bin/sh function doppio { local prova=1 dp=$1$1 } doppio "ciao" echo "dp: $dp"

Input read (comando interno della bash) pemette di assegnare valori alle variabili, inserendoli da standard input. read [opzioni] [nomevar1 nomevar2...] le parole inserite in input vengono assegnate in ordine a nomevar1, nomevar2,... Se non sono state specificate variabili, vengono utilizzati i parametri posizionali. opzione -s: silent mode (come per password) opzione -n num: si ferma dopo l'inserimento di num caratteri

Select Genera in modo semplice menù interattivi. La scelta va avanti finché non viene richiamato break. select nomescelta [in lista] do comandi done Se in lista non è specificato, vengono utilizzati i parametri posizionali ($1, $2,...).

Select #!/bin/bash echo -n "In quale razza è particolarmente echo sviluppato il senso dell'onore?" lista="klingon romulani vulcaniani cardassiani" select scelta in $lista do if [ $scelta = klingon ] then echo "esatto!" break else echo "sbagliato!" fi done

Comandi utili sort ordinamento sul testo in input. find ricerca file, ed esecuzione comandi in corrispondenza dei medesimi. grep sed ricerca sottostringhe nei file; supporta espressioni regolari. stream editor: permette modifiche al volo sul testo in arrivo dallo standard input.