Con un approccio pratico, e ricco di esempi semplici per illustrare bene i concetti, impara le basi del linguaggio di scripting Bash, ormai divenuto uno standard de facto in termini di scripting di shell (Shell Scripting).
La presentazione si compone di 12 lezioni / capitoli:
1 - Introduzione
2 - Primi passi
3 - Variabili
4 - Array
5 - Aritmetica
6 - Test
7 - Costrutti condizionali
8 - Cicli iterativi
9 - Funzioni
10 - Quoting
11 - Terminare uno script
12 - Debugging
Per un totale di 98 diapositive
Videocorso in italiano su Udemy!
https://www.udemy.com/corso-linux-per-sviluppatori-web-lamp-apache-php-mysql/?couponCode=SLIDES10
- Installare un server linux
- Lavorare con la linea di comando
- Gestione gruppi, utenti e permessi
- Bash scripting
- Espressioni regolari
- Apache, NGnix &Https
- Installare PHP & MySql
- Cron e crontab
Master: Amministratore Linux - Livello Base
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
Con un approccio pratico, e ricco di esempi semplici per illustrare bene i concetti, impara le basi del linguaggio di scripting Bash, ormai divenuto uno standard de facto in termini di scripting di shell (Shell Scripting).
La presentazione si compone di 12 lezioni / capitoli:
1 - Introduzione
2 - Primi passi
3 - Variabili
4 - Array
5 - Aritmetica
6 - Test
7 - Costrutti condizionali
8 - Cicli iterativi
9 - Funzioni
10 - Quoting
11 - Terminare uno script
12 - Debugging
Per un totale di 98 diapositive
Videocorso in italiano su Udemy!
https://www.udemy.com/corso-linux-per-sviluppatori-web-lamp-apache-php-mysql/?couponCode=SLIDES10
- Installare un server linux
- Lavorare con la linea di comando
- Gestione gruppi, utenti e permessi
- Bash scripting
- Espressioni regolari
- Apache, NGnix &Https
- Installare PHP & MySql
- Cron e crontab
Master: Amministratore Linux - Livello Base
Nel contesto della formazione professionale rivolta ad aziende ed enti pubblici, sono stati preparati ed erogati dei corsi di Amministratore di sistemi Linux, al livello base ed al livello avanzato.
Il contenuto del corso è allineato con alcuni moduli della certificazione LPIC (Linux Professional Institute Certification), a cavallo tra i livelli 1 e 2. Tutto il materiale didattico è disponibile liberamente con licenza Creative Commons BY-NC-SA.
I docenti del corso sono i proff. Giovanni Squillero, Bartolomeo Montrucchio e Fulvio Corno.
Maggiori informazioni: http://elite.polito.it/index.php/teaching/current-courses/255-master-linux-admin
G-CHECKS is a proprietary methodology of knowquestion which provides a holistic strategic planning framework.
G-CHECKS ensures projects and/or change initiatives are logical, valuable and able to be clearly communicated to stakeholders.
IMAGENES DEL GRUPO RAMMSTEIN AL ESTILO POGO DE TINTA Y CARACTERIZANDO PERSONAJES RECONOCIDO
RAMMSTEIN IMAGES WITH INK-MOSH STYLE AND PLAYING DIFFERENT AND RECOGNIZED CHARACTERS
Presentation that introduces that concepts of STUPID code and SOLID code.
Also if this two acronyms have been covered multiple times in Software Engineering history that are still sometimes not well known. It is always worth the spread the word!
Provides a real-world validated approach to managing teams who have to juggle delivery of change initiatives and BAU service delivery. Based on a hybrid variant of Scrum and Kanban
Brought to you by http://www.eBusinesses.com and http://www.Greensboro-SEO.com. This presentation is from the eBusinesses Meetup in Greensboro NC on April 6th, 2009
Intro a Linux tenuta all'università degli studi di Napoli Federico II. Speaker: Gabriele Previtera - https://www.linkedin.com/in/gabriele-previtera-6657648b/
Slide riferite alla terza lezione del corso. Trattano dell'utilizzo della shell in generale e dei comandi in essa utilizzabili. Si parlerà anche delle soluzioni ad eventuali problemi di configurazione del sistema ed inoltre delle più comuni tecniche di virtualizzazione ed emulazione o l'utilizzo di wine.
co-authors: Scola Davide and Maia Nicoletta
Small workshop on Inferno, Limbo and the Dis virtual machine.
Inferno is a new operative system developped for creation and support of network systems and distribuited services.
There are three fundamental programming principles: all resources are files in a hierarchic file system, the network is a unic namespace like a file system hierarchic, it uses Styx that is a standard protocol of comunication for local and remote resources.
Limbo is the programming language for the Inferno OS.
The language is Object Based, you can compile it or interpret it with the Dis virtual machine (like Java virtual machine with a JIT compiler).
Limbo has a native support for: array, string, int, float, tuple (like record), channel (linda-like), and other...
The Limbo's channels are used to comunicate with other processes or with thread.
The Dis virtual machine is an environment for Limbo programs and it has important features: CISC architecture, memory-to-memory, many high level types, just in time compiler, ecc...
In the end of presentation there is a comparison between Dis, Java VM and C# .Net VM.
Questa è un'altra spiegazione più semplice e diretta del concetto di linguaggio di programmazione e della differenza che c'è tra compilatore ed interprete.
A simple introduction to the Python programming language. In Italian. OLD: superseeded by Pycrashcourse 3.1.
Originally presented during the Networking class of the Computer Science course at the University of Parma
Domain Specific Languages: implementazione in Lisp e integrazione con Java mediante API JSR-223.
Presentazione tenuta il 20/01/2009 in occasione dell'incontro del JUG Genova.
Creare un proprio linguaggio di programmazione per il web e applicazioni desk...Codemotion
Nonostante siano disponibili maree di linguaggi per programmare ha senso realizzare un proprio linguaggio per risolvere specifici problemi o per utilizzarlo con determinati ambienti e tecnologie?
Partendo dall'analisi della realizzazione di un vero e proprio linguaggio interpretato con sintassi in dialetto C/PHP si cercherà di illustrare se le metodologie, gli scopi e il prodotto finale hanno un senso pratico e migliorativo oppure la realizzazione di tali ambienti non sia più necessari.
Presented at Catania GTUG. This presentation is about the integration between openid and opensocial. Openid specification are described and the presentation involves in realization of a provider openid, a relying party a container opensocial and some gadgets.
Are described technologies like communityid, poidsy, shindig, pigeon, m4p2 and some others...
Riassunto e traduzione della reference ufficiale del W3C del linguaggio per il tagging semantico di documenti WSDL (linguaggio per la descrizione di servizi)
Slide di supporto alla seconda lezione. Vengono in queste slide mostrate le maggiori tecniche di utilizzo di un ambiente sfruttante ambiente grafico GNOME ed i relativi software consigliati per l'uso.
Seconda lezione del corso. Vengono qui introdotti i maggiori sistemi operativi alternativi a Windows. Viene brevemente illustrata la storia delle distribuzioni Linux (con maggiore accento all'ascendenza di Ubuntu). Vengono, infine, mostrate le possibilità di scelta, su un sistema linux, in merito ad ambienti grafici.
Supporto alla prima lezione del corso. Viene qui mostrata in semplici passi l'installazione di un Sistema Operativo Ubuntu. Vengono altresì fornite informazioni su cosa sia una partizione e sul partizionamento in generale.
Introduzione al software Open Source ed al software libero. Notizie a proposito degli enti (Open Source Software) più importanti e delle licenze più utilizzate.
1. Seminario: Bash Programming
Seminario: Bash Programming
Sebastiano Merlino
Universit` degli Studi di Catania - Facolt` di Ingegneria
a a
17 Maggio 2010
1 / 17
2. Seminario: Bash Programming
Scripting
Scripting
In generale
Un linguaggio di scripting ` un linguaggio di programmazione
e
interpretato destinato a compiti di automazione di sistema, piccole
applicazioni o compiti lightweight.
Generalmente si tratta di semplici programmi atti ad interagire con
sistemi pi` complessi.
u
I primi linguaggi di scripting nacquero dall’esigenza di automatizzare
operazioni ripetitive come l’esecuzione di particolari programmi; essi
trovarono, successivamente, spazio in vari altri ambiti ed attualmente si
trovano molto diffusi anche nello sviluppo per il web.
Bash Scripting
Con tale termine ci si riferisce a quello che ` un linguaggio solitamente
e
usato per l’automazione di processi ripetitivi sui sistemi operativi
Unix-like.
2 / 17
3. Seminario: Bash Programming
Esempi semplici
Esempi semplici
Hello World
#!/bin/bash
echo Hello World
Questo script ha solo due righe.
La prima indica al sistema quale software usare per avviare lo script.
La seconda ` l’azione eseguita dallo script che stamper` a video la scritta
e a
Hello World.
Fornendo diritti di esecuzione allo script esso potr` essere eseguito
a
tramite il comando ./nome script
Script di backup
#!/bin/bash
tar -cZf /var/my-backup.tgz /home/me/
Questo script serve a dimostrare come ogni comando possa essere
eseguito su shell. In questo caso realizziamo facilmente un backup della
home tramite la sua compressione all’interno di un file.
3 / 17
4. Seminario: Bash Programming
Elementi del Linguaggio
Variabili
Le Variabili
Come in qualunque altro linguaggio di programmazione, possiamo usare
le variabili come contenitori pratici per i nostri dati. In questo particolare
linguaggio, non esistono tipi per le variabili e non vi ` necessit` di
e a
dichiararle prima di utilizzarle ma basta solo assegnarne il riferimento.
Hello World - migliorato
#!/bin/bash
STR=Hello World
echo STR
Script di backup - migliorato
#!/bin/bash
OF=/var/my-backup-$(date +%Y%m%d).tgz
tar -cZf $OF /home/me/
In questo modo il nostro backup sara’ facilmente datato. Notate che il
comando date viene eseguito e l’output ci viene ritornato.
4 / 17
5. Seminario: Bash Programming
Elementi del Linguaggio
Variabili
Altre Variabili
Variabili Built-in
Sono variabili predefinite per ogni script e permettono di compiere
svariate azioni tramite il nostro script.
$0: Nome dello script.
$1: Valore del primo parametro (similmente $2, $3, ecc...).
$#: Numero di parametri.
$* e $@: Tutti i parametri.
$-: Opzioni date alla shell.
$?: Exit status dell’ultimo comando.
$$: PID dello script.
Variabili Locali
Esse sono variabili proprie di un certo scope (blocco di codice come una
funzione, un ciclo, ecc...); possono essere create usando il costrutto
local.
5 / 17
6. Seminario: Bash Programming
Elementi del Linguaggio
Caratteri Speciali
Caratteri Speciali
La shell accetta alcuni caratteri speciali o combinazioni di tasti che aiutano
molto nel suo utilizzo quotidiano:
Tasto tab : permette l’auto-completamento del percorso per raggiungere un file.
‘‘ ~ ’’ (ottenibile da <Alt Gr + ` : indica la cartella home.
ı>)
‘‘|’’ : detta anche pipe, connette fra loro due comandi passando in ingresso al
secondo, l’uscita del primo.
‘‘cmd > file’’, ‘‘cmd >> file’’ : salvano i valori stampati dal comando cmd
nel file indicato. Il primo riscrive totalmente il file (cancellando eventuali contenuti
precedenti), il secondo accoda i nuovi contenuti ai vecchi.
‘‘cmd < file’’ : permette al comando cmd di prendere input da file.
‘‘cmd ; cmd’’ : permette di eseguire due comandi uno dopo l’altro.
‘‘()’’ : esegue i comandi contenuti all’interno e fornisce i risultati d’uscita insieme al
termine del secondo.
‘‘&’’ : permette di mantenere il controllo della shell nonostante un programma sia in
esecuzione tramite essa cos` da eseguire pi` programmi contemporaneamente.
ı u
‘‘ ` ’’ (ottenibile da <Alt Gr + ’ >) : detto anche backtick; ci` che ` contenuto fra
o e
due backtick viene eseguito e se ne utilizzeranno i risultati di uscita.
Virgolette doppie ‘‘’’ e virgolette singole ’ ’ : indentificano stringhe.
‘‘ ’’ : backslash; indica alla shell di ignorare il carattere appena successivo.
‘‘ !! ’’ : viene sostituito con l’ultimo comando in history.
6 / 17
7. Seminario: Bash Programming
Elementi del Linguaggio
Operatori
Operatori
Operatori di comparazione Stringhe
s1 = s2: verifica che s1 sia uguale a s2
s1 != s2: verifica che s1 sia diverso da s2
s1 =~ s2: s2 ` un’espressione regolare e confrontata con s1
e
-n s1: verifica che la stringa s1 sia non nulla (almeno un carattere)
-z s1: verifica che la stringa s1 sia nulla
Operatori Aritmetici
Oltre agli operatori aritmetici (+, -, *, /, %) esistono vari operatori relazionali:
-lt (<): Verifica che il numero a sinistra sia minore di quello a destra
-gt (>): Verifica che il numero a sinistra sia maggiore di quello a destra
-le (<=): Verifica che il numero a sinistra sia minore o uguale di quello a destra
-ge (>=): Verifica che il numero a sinistra sia maggiore o uguale di quello a
destra
-eq (==): Verifica che il numero a sinistra sia uguale a quello a destra
-ne (! =): Verifica che il numero a sinistra sia diverso da quello a destra
7 / 17
8. Seminario: Bash Programming
Elementi del Linguaggio
Operatori
Operatori
Operatori su files
-r file: Verifica che il file sia leggibile
-w file: Verifica che il file sia scrivibile
-x file: Verifica che il file sia eseguibile
-f file: Verifica che il file sia ordinario (non un device file o una
cartella)
-s file: Verifica che il file abbia dimensione maggiore di 0
-d file: Verifica che il file sia una directory
-e file: Verifica che il file esista
8 / 17
9. Seminario: Bash Programming
Elementi del Linguaggio
Comandi composti
(list): ci` che qui ` indicato con list, viene eseguito in una subshell e ci viene
o e
restituito solo l’exit status di list.
{list; }: il comando viene eseguito nella shell corrente. Deve essere terminato
da un punto e virgola e le parentesi devono essere isolate mediante spazi.
((expression)): l’epressione ` valutata secondo regole aritmetiche; se il valore
e
restituito dalla valutazione ` diverso da zero, il costrutto restituisce 0, altrimenti
e
viene restituito 1. Equivale a let expression.
[[expression]]: ritorna il valore ottenuto tramite valutazione di un’espressione
condizionale.
( expression ): ritorna il valore di expression; pu` essere usato per forzare la
o
precedenza.
! expression: ` true se expression ` false
e e
expression1 && expression2: restituisce vero se e solo se tutte e due le
espressioni sono vere
expression1 || expression2: restituisce vero se anche una sola delle
espressioni ` vera.
e
Gli operatori && e || godono di corto circuito; nel caso di && la seconda
espressione viene valutata solo se la prima ` vera; invece per || la seconda
e
espressione viene valutata solo se la prima ` falsa.
e
9 / 17
10. Seminario: Bash Programming
Elementi del Linguaggio
Operatori condizionali
Costrutto IF
Assume la forma:
if list; then list; [ elif list; then list; ] ... [ else list; ] fi
`
E il pi` semplice costrutto condizionale ed esegue il blocco di codice
u
dopo l’if solo nel caso in cui l’espressione valutata sia vera.
#!/bin/bash
if [ $1 -lt $2 ]; then
echo Minore
elif [ $1 -gt $2 ]; then
echo Maggiore
else
echo Uguale
fi
Questo script previo passaggio di due numeri come parametri, valuta se
quello a sinistra sia minore, uguale o maggiore di quello a destra.
10 / 17
11. Seminario: Bash Programming
Elementi del Linguaggio
Operatori condizionali
Costrutto CASE
Risulta utile spesso al fine di evitare enormi trafile di if-elif-else. Il tutto
risulta, tramite questo costrutto, molto pi` compresso.
u
case word in [ [(] pattern [ | pattern ] ... ) list ;; ] ... esac
Il comando case confronta word con i pattern uno alla volta ed esegue il
blocco corrispondente al primo pattern che fa match con la word.
#!/bin/bash
case $1 in
a) echo a;;
b) echo b;;
c) echo c;;
*) echo default;;
esac
Usando ;& invece che ;; viene eseguito anche il blocco che segue il
simbolo.
Usando ;;& invece che ;; viene valutata anche la condizione che segue il
simbolo e se vera viene eseguito il blocco.
11 / 17
12. Seminario: Bash Programming
Elementi del Linguaggio
Cicli
Costrutto FOR
Sebbene il costrutto si chiami for esso rappresenta quello che tipicamente
in informatica viene detto foreach; esso si occupa di iterare gli elementi di
una sequenza.
#!/bin/bash #!/bin/bash
for i in $( ls ); do for i in ` seq 1 10` do
echo item: $i echo item: $i
done done
Il primo itera su una lista di fle resistuita da ls e ne stampa il nome a
video; il secondo, invece, simula un normale ciclo for (stile C) stampando
i numeri da 1 a 10.
12 / 17
13. Seminario: Bash Programming
Elementi del Linguaggio
Cicli
Costrutti WHILE e UNTIL
Il costrutto while esegue un blocco di codice iterativamente finch´ si
e
mantiene vera la condizione di controllo; il costrutto until invece esegue il
blocco finch´ la condizione di controllo ` falsa.
e e
#!/bin/bash #!/bin/bash
COUNTER=0 COUNTER=20
while [ $COUNTER -lt 10 ]; do until [ $COUNTER -lt 10 ]; do
echo Contatore: $COUNTER echo Contatore: $COUNTER
let COUNTER=COUNTER+1 let COUNTER=COUNTER-1
done done
Il primo mostrer` il valore del contatore per i valori da 0 a 9 ed il secondo
a
per i valori da 20 a 11.
13 / 17
14. Seminario: Bash Programming
Elementi del Linguaggio
Funzioni
Funzioni
Come ogni altro linguaggio di programmazione, anche il linguaggio bash
ha il suo costrutto per la creazione delle funzioni.
Le funzioni risultano esterne rispetto al flusso di esecuzione. Ogni
funzione creata pu` poi essere richiamata all’interno dello script come
o
qualunque altro comando.
#!/bin/bash
function quit {
All’inizio dello script sono dichiarate le funzioni
exit quit, h e f.
}
function h {
Viene eseguita la funzione h che prende un
echo $1 parametro in ingresso stampandolo a video.
}
function f {
Successivamente viene eseguita la funzione f che
local W = parola dichiara al proprio interno la variabile W e la
echo W
}
stampa a video. Infine viene chiamata la funzione
h Hello quit che termina il flusso tramite l’utilizzo della
f
quit
parola chiave exit. L’ultima riga dello script,
echo foo
infatti, non viene eseguita.
14 / 17
15. Seminario: Bash Programming
Elementi del Linguaggio
Select e Menu
Costrutto SELECT
Un tale costrutto permette di creare facilmente dei menu printati su
schermo all’interno dei quali si associa un numero ad un valore che pu`
o
riferire un’azione.
#!/bin/bash
OPTIONS=Hello Quit
select opt in $OPTIONS; do
if [ $opt = Quit ]; then
echo done
exit
elif [ $opt = Hello ]; then
echo Hello World
else
clear
echo bad option
fi
done
Il risultato ` un menu che permette la scelta fra le voci Hello e Quit ed
e
esegue le azioni associate mediante costrutto if.
15 / 17
16. Seminario: Bash Programming
Varie
Varie
Lettura da tastiera
Ci` che un utente scrive su tastiera pu` essere letto mediante il comando
o o
read nomevar. Ritroveremo tutto il contenuto scritto dall’utente fino al
primo ritorno a capo all’interno della variabile nomevar.
Cattura dell’output
Come abbiamo gi` visto gli apici ` permettono di eseguire i comandi
a
che si trovano al loro interno.
Mediante una sintassi del tipo var=` comando ` riusciamo a trovare
all’interno della variabile var l’output del comando fra apici.
16 / 17
17. Seminario: Bash Programming
Andare Oltre
Sei sicuro di voler usare Bash?
Array
Gli array si indicano con la classica notazione [ ]. Quindi
nome array[indice]=valore indicher` che l’elemento dell’array indicato con
a
indice assume il valore specificato. Gli array possono essere sparsi.
Thread
Possono essere lanciati comandi e processi in maniera asincrona tramite la
sintassi coproc NAME command [redirections].
Tool
source: lancia l’esecuzione di un’altro script.
sed e awk: utili per il parsing e il processamento di stringhe.
Altro
Molto altro lo potete trovare negli script associati alle slide che verranno
presentati sul sito.
17 / 17