SlideShare a Scribd company logo
GNU/Linux@UNINA
● Educazione Complementare
○ Fare pratica!
○ Utile per i colloqui
○ Soft Skill
● Linux
○ Esami e Lavoro
○ Scegliere cos’è meglio per te!
● To Be Continued! Stay tuned
Perchè questo seminario!?
Perché sono cosi forti:
● Distribuzioni: Kernel + Applicazioni del progetto
GNU
● Progetto GNU e F.O.S.S.
○ 4 Libertà fondamentali
● FreeSoftware vs OpenSource
○ Free come libero!
● Linux e Linus
Cos’è GNU/Linux?
Perché sono cosi forti:Monolitico vs Microkernel
Perché sono cosi forti:Architettura
Perché sono cosi forti:Black… all the shell have a black background
Perché sono cosi forti:Come interagiamo normalmente con un sistema
Shell
Kernel
Hardware
Perché sono cosi forti:Shell
● Implementa l’interfaccia a riga di comando ;
● Si tratta di un interprete di comandi che permette all'utente di
comunicare col sistema operativo attraverso una serie di funzioni
predefinite;
● Concatena vari comandi, costruendo l’equivalente di una catena di
montaggio, realizzando così un comando complesso partendo da
comandi più semplici ;
● Permette di eseguire programmi e script .
Perché sono cosi forti:Shells???
la shell è un programma come qualsiasi altro pertanto si possono avere
diverse versioni di shell su sistema :
● sh (prima shell dei sistemi Unix);
● bash (shell degli attuali sistemi GNU/Linux);
● ash (shell minimale per sistemi con risorse limitate).
● shell fatte da voi !
Perché sono cosi forti:Utility sistema : Filosofia
Ogni strumento necessario al funzionamento del sistema è un
programma, che fa una cosa nel miglior modo possibile!
Ad esempio :
● mv ( move ) ;
● cp ( copy ) ;
● le altre core-utils ( coltellino svizzero ) ;
● interprete dei comandi.
Perché sono cosi forti:Shell : Ready ??? GO!!
● Apri terminale
○ Digita i seguenti comandi :
■ ls /;
■ ps ;
■ top ;
■ cat /etc/passwd ;
1
2
3
Perché sono cosi forti:Filesystem hierarchy standard
Perché sono cosi forti:
● Regular file [ - ]: un file che contiene dei dati
● Directory [ d ]: contiene una lista di nomi associati a degli inode.
● Symbolic link [ l ]: contiene un riferimento ad un altro file o directory.
● Char Device [ c ]: identifica una periferica ad accesso a caratteri.
● Block device [ b ]: identifica una periferica ad accesso a blocchi.
● fifo o pipe [ p ]:identifica una linea di comunicazione unidirezionale.
● socket [ s ]: identifica una linea di comunicazione bidirezionale.
Everything is a file
Perché sono cosi forti:Users and Permission
● Utenti e UID: /etc/shadow
● Gruppi e GUID: /etc/group
● Informazioni sui file: ls -n
Perché sono cosi forti:Sudo users
● Root vs Sudo
● Aggiungere un nuovo utente:
○ # adduser nomeutente
● Aggiungerlo al gruppo degli utenti sudo
○ # usermod -aG sudo nomeutente
● visudo /etc/sudoers
○ Definire regole per utenti e gruppi
Perché sono cosi forti:Installiamo!
● Sistemi Debian Like : APT,
dpkg (.deb)
● RedHat: yum, DNF (rpm)
● Arch: Pacman
● Multi distribuzione:
○ Snap
○ Flatpack
○ Compilare
○ Script
Perché sono cosi forti:Man : reference manuals
● Molti programmi hanno un manuale che ne descrive il suo
comportamento e le opzioni.
● Proviamolo :
○ man ls ;
○ man ps ;
○ man semop;
○ man semget;
○ man top ;
Navigare in man:
● premere “q” per uscire;
● premere “/” per entrare in modalità ricerca
Perché sono cosi forti:Struttura di un comando base
ls -a -l --color=no main.c
● ls : comando;
● -a,-l : opzioni in forma abbreviata;
● --color= : opzione in forma estesa;
● no : valore dell’opzione
● main.c valore in input al comando
Perché sono cosi forti:La redirezione dell’I/O
● Cosa succede quando un comando viene lanciato?
○ Esso si aspetta di avere disponibili e già aperti i seguenti file :
■ standard input filedescriptor: 0
■ output filedescriptor: 1
■ error filedescriptor: 2
In un sistema GNU/LInux tutto è un FILE!
Cosa è un fd ?
-- man fopen
Perché sono cosi forti:Redirezione dell’output sul file
● aprire due finestre di terminale
● nella prima
○ touch test ;
○ tail -f test .
● Nella seconda
○ echo “ciao” > test ;
○ echo “mondo” > test ;
○ echo “ciao mondo” >> test ;
○ cat test ⇐⇒ cat < test .
Perché sono cosi forti:Proviamo tail con apache
● # apt-get update
● # apt-cache search apache
● # apt-get install apache2
○ # service apache2 status
○ # service apache2 restart
○ tail -f < /var/log/apache2/access.log
● aprire nel browser 127.0.0.1
Il # indica che il comando deve
essere eseguito come con i
privilegi di superutente.
Il comando sudo sta per super
user do
Perché sono cosi forti:Redirezione dell’I/O (NextLevel)
● nella prima finestra:
○ nc -lnvp 4444
● nella seconda
○ cd /etc/
○ bash -i >& /dev/tcp/127.0.0.1/4444 0>&1
■ bash -i : esegue la shell in modalità interattiva ;
■ >&: “ redirezione lo standard output e lo standard error di bash
sulla socket “, invio i risultati dei comandi a nc;
■ 0 >&1: “muove il file descriptor dello standard output della socket
nello standard input del terminale “,(da i comandi a bash!).
/dev/tcp/127.0.0.1/4444
è un file!!
Perché sono cosi forti:Redirezione dell’output NextLevel
Perché sono cosi forti:La pipe “|”
● La pipe
○ ls -al | grep "main.c"
○ ifconfig wlo1 | grep "inet "
○ ifconfig wlo1 | grep "inet " | awk '{print $2}'
Perché sono cosi forti:Le variabili
● echo $PATH
● export TEST=”ciao mondo”
○ echo $TEST
○ unset $TEST
● export RES=$( ls -al /bin/ | grep mv | awk '{line=$1" "$3"
"$9;print line}')
○ echo $RES
Perché sono cosi forti:Script
Uno script può contenere :
● una semplice lista di comandi
● funzioni
● cicli
● istruzioni condizionali
Perché sono cosi forti:Base di uno Script
La prima cosa da indicare in uno script è il percorso dell’interprete che si
vuole utilizzare per eseguire i comandi preceduto dalla direttiva #! .
Ad esempio se si vuole utilizzare bash:
#! /bin/bash
Ogni riga dello script, a meno
che non presenti dei caratteri
di escape, viene interpretata
come un comando!
Perché sono cosi forti:Commenti
Le righe di commento iniziano con #.
Ad esempio :
#! Questo è un commento !
Perché sono cosi forti:Variabili
Bash è un linguaggio a tipizzazione dinamica, non è richiesto indicare
il tipo dei dati che la variabile conterrà.
Per dichiarare una variabile basta indicare il nome e il valore, utilizzando
la seguente sintassi:
NomeVariabile=Valore Attenzione agli spazi !!
La sintassi di bash non prevede
l’utilizzo degli spazi prima e
dopo il segno di =
Perché sono cosi forti:Variabili
Per utilizzare una variabile si utilizza la seguenti sintassi :
$NomeVariabile
# Variabile
X=2019
# Uso della variabile
echo $X
Perché sono cosi forti:Stringe
Le stringhe possono andare sia tra “” che tra ‘’.
Quando si usano i ‘’ il parser considera i caratteri speciali di bash come
normali caratteri e non come direttive per la shell.
Ad esempio :
X=2019
echo “Anno : $X” #Stampa il valore della variabile X
echo ‘Anno : $X’ #Stampa $X
Perché sono cosi forti:Array
Per definire un array basta sintassi :
NomeArray=(valore1 valore2 ….)
# Array
X=(‘NaLUG’ ‘Workshop’ ‘2019’)
# Uso
echo ${X[*]}
Perché sono cosi forti:Uso degli Array
Per gestire un array basta di solito la seguente sintassi :
● ${arr[*]} # Tutti gli elementi nell’array
● ${!arr[*]} # Tutti gli indici dell’array
● ${#arr[*]} # Numero di elementi nell’array
● ${#arr[0]} # Length of item zero
Perché sono cosi forti:Variabili di built-in
● $# : Numero di argomenti passati in input
● $$ : pid del comando corrente ;
● $0 : nome del comando in esecuzione ;
● $* (* ∈ N-{0} ) : variabili in ingresso ;
● $@ : Tutti i parametri in ingresso ;
● $? : Stato di uscita dell’ultimo comando.
Perché sono cosi forti:Operazioni tra numeri
Bash prevede una sintassi particolare per eseguire operazioni tra
numeri interi, in particolare una qualsiasi operazione va tra $(( ))
X=3
Y=4
#Stampo la somma tra i valori di X e Y
echo “$(( $X+$Y))”
Perché sono cosi forti:Comando Test
Il comando test è utilizzato per valutare il valore di un'espressione
logica.
test “ciao” != “Ciao”
test 1 == 2
[ “ciao” != “ciao” ]
Il risultato viene in una delle variabili di built-in della
shell.
in particolare in $? viene salvato il valore di ritorno
dell’ultimo comando eseguito ( 0 eseguito senza
errori )
Perché sono cosi forti:Come scrivere le condizioni??
man test
Perché sono cosi forti:Struttura dell’ IF
if [ condizione ] ; then
elif [ condizione ] ; then
else
fi
Perché sono cosi forti:Struttura del while e del for
while [ condizione ] do
done
for i in $(seq 0 n) ; do
done
Perché sono cosi forti:Esempio
Proviamo a realizzare uno script che ci fornisce l’indirizzo ip di un
interfaccia di rete presente nel nostro sistema.
L’interfaccia viene passata come parametro di input.
Perché sono cosi forti:Esempio
#!/bin/bash
#Controllo il numero di parametri in input
if [ $# -eq 1 ]; then
INTERFACE=$1
IP=$(sudo ifconfig $INTERFACE | grep "inet " | awk '{print $2}')
echo “L’ip dell’interfaccia $INTERFACE è $IP”
fi
chmod +x
./getIP.sh wlo1
Perché sono cosi forti:Proviamo a fare uno script
Contiamo il numero di occorrenze di una data parola nei file
.txt in una cartella.
Perché sono cosi forti:Continua ad esercitarti a casa
● https://explainshell.com
● http://www.pluto.it/files/ildp/HOWTO/Bash-Prog-Intro-HO
WTO/Bash-Prog-Intro-HOWTO.html
● https://www.fis.uniroma3.it/CALCOLO_DOC/unix/appuntil
inux/alndx.htm
Perché sono cosi forti:Contattaci
/NaLinuxUsersGroup
http://www.nalug.net
info@nalug.net
Perché sono cosi forti:That’s all Folks!
Attribuzione - Non commerciale - Condividi allo
stesso modo
Questa licenza permette a terzi di modificare,
redistribuire, ottimizzare ed utilizzare la tua opera
come base non commerciale, fino a che ti diano il
credito e licenzino le loro nuove creazioni mediante i
medesimi termini

More Related Content

PDF
Bash intro
PDF
Bash Scripting
PDF
Corso Bash
ODP
Seminario introduzione all'uso del terminale e della bash in Linux
ODP
Linux Capabilities - ita - v2.1.5 - compatta
PDF
Shell unix
PDF
Lezione 3: Connessioni TCP
PDF
[BASH] Shell Scripting [ITA]
Bash intro
Bash Scripting
Corso Bash
Seminario introduzione all'uso del terminale e della bash in Linux
Linux Capabilities - ita - v2.1.5 - compatta
Shell unix
Lezione 3: Connessioni TCP
[BASH] Shell Scripting [ITA]

What's hot (17)

PDF
Linux day 2016 la shell in linux
PDF
Lezione 4: Comunicazione con UDP
PDF
As it e icloud
PDF
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
PDF
DOC
Assembly and Reverse Engineering
DOC
Buffer Overflow - Shellcode - Shatter Attack
PDF
PDF
Sistemi operativi Fabiano Dalla Piazza
PPTX
Rest sdk
ODP
Presentazione Oz - Mozart
PDF
Groovy e Domain Specific Languages
PPT
Introduzione al linguaggio PHP
ODP
Many Designs Elements
PDF
Introduzione a Python
PDF
Il simulatore NS-2
PDF
Let's give it a GO!
Linux day 2016 la shell in linux
Lezione 4: Comunicazione con UDP
As it e icloud
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
Assembly and Reverse Engineering
Buffer Overflow - Shellcode - Shatter Attack
Sistemi operativi Fabiano Dalla Piazza
Rest sdk
Presentazione Oz - Mozart
Groovy e Domain Specific Languages
Introduzione al linguaggio PHP
Many Designs Elements
Introduzione a Python
Il simulatore NS-2
Let's give it a GO!
Ad

Similar to Linux@Unina (20)

PDF
Bash programming
PDF
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
PDF
Chi ha paura della command-line? - WordCamp Roma 2018
PPTX
Linux shell
PPTX
Linux shell
PPT
Inferno Limbo Italian
PDF
Esercitazione 1 (27 febbraio 2012)
PPT
X2 Linux Riassunti
PDF
As it e icloud
PDF
Linux Day 2009 LAMP HowTo
ODP
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
PDF
pugBO #10 PSR e Composer
PDF
GNU Linux Programming introduction
PDF
Laboratorio Programmazione: Memoria dinamica
PPT
2 Linux Comandi Essenziali
PDF
Al telefono con Adhearsion e Ruby
KEY
Pycrashcourse
ODP
Codemotion 2012 creare un proprio linguaggio di programmazione
PDF
introduzione a symfony 2
Bash programming
Scripting e DataWarehouse sui Big Data. Luca Pireddu (CRS4)
Chi ha paura della command-line? - WordCamp Roma 2018
Linux shell
Linux shell
Inferno Limbo Italian
Esercitazione 1 (27 febbraio 2012)
X2 Linux Riassunti
As it e icloud
Linux Day 2009 LAMP HowTo
RiminiLUG. Mini Corso su Linux p2: Networking & Terminal
pugBO #10 PSR e Composer
GNU Linux Programming introduction
Laboratorio Programmazione: Memoria dinamica
2 Linux Comandi Essenziali
Al telefono con Adhearsion e Ruby
Pycrashcourse
Codemotion 2012 creare un proprio linguaggio di programmazione
introduzione a symfony 2
Ad

More from NaLUG (20)

ODP
Grid System
PDF
Cyber Forensic
PDF
Digital Divide
PDF
Drupal
PDF
Digital Forensic
PDF
Open Source: strumento per l'e-democracy
ODP
OpenHardware : Arduino
PDF
Understanding Linux
PDF
Net Neutrality: HoBBIT
PDF
Opensource per un Sistema Informativo Territoriale
ODP
Knomos
PDF
App comunicazione comune di Napoli
ODP
BISmark : the broadband internet service benchmark
PDF
ClearOS
PDF
Security and hacking Engineering
PDF
Software libero at ENEA
ODP
Una nuova crittografia frattale: Crypt fna
PDF
ROS@Unina
PPTX
Python@Unina - Exercises
PPTX
Python@Unina - Theory
Grid System
Cyber Forensic
Digital Divide
Drupal
Digital Forensic
Open Source: strumento per l'e-democracy
OpenHardware : Arduino
Understanding Linux
Net Neutrality: HoBBIT
Opensource per un Sistema Informativo Territoriale
Knomos
App comunicazione comune di Napoli
BISmark : the broadband internet service benchmark
ClearOS
Security and hacking Engineering
Software libero at ENEA
Una nuova crittografia frattale: Crypt fna
ROS@Unina
Python@Unina - Exercises
Python@Unina - Theory

Linux@Unina

  • 2. ● Educazione Complementare ○ Fare pratica! ○ Utile per i colloqui ○ Soft Skill ● Linux ○ Esami e Lavoro ○ Scegliere cos’è meglio per te! ● To Be Continued! Stay tuned Perchè questo seminario!?
  • 3. Perché sono cosi forti: ● Distribuzioni: Kernel + Applicazioni del progetto GNU ● Progetto GNU e F.O.S.S. ○ 4 Libertà fondamentali ● FreeSoftware vs OpenSource ○ Free come libero! ● Linux e Linus Cos’è GNU/Linux?
  • 4. Perché sono cosi forti:Monolitico vs Microkernel
  • 5. Perché sono cosi forti:Architettura
  • 6. Perché sono cosi forti:Black… all the shell have a black background
  • 7. Perché sono cosi forti:Come interagiamo normalmente con un sistema Shell Kernel Hardware
  • 8. Perché sono cosi forti:Shell ● Implementa l’interfaccia a riga di comando ; ● Si tratta di un interprete di comandi che permette all'utente di comunicare col sistema operativo attraverso una serie di funzioni predefinite; ● Concatena vari comandi, costruendo l’equivalente di una catena di montaggio, realizzando così un comando complesso partendo da comandi più semplici ; ● Permette di eseguire programmi e script .
  • 9. Perché sono cosi forti:Shells??? la shell è un programma come qualsiasi altro pertanto si possono avere diverse versioni di shell su sistema : ● sh (prima shell dei sistemi Unix); ● bash (shell degli attuali sistemi GNU/Linux); ● ash (shell minimale per sistemi con risorse limitate). ● shell fatte da voi !
  • 10. Perché sono cosi forti:Utility sistema : Filosofia Ogni strumento necessario al funzionamento del sistema è un programma, che fa una cosa nel miglior modo possibile! Ad esempio : ● mv ( move ) ; ● cp ( copy ) ; ● le altre core-utils ( coltellino svizzero ) ; ● interprete dei comandi.
  • 11. Perché sono cosi forti:Shell : Ready ??? GO!! ● Apri terminale ○ Digita i seguenti comandi : ■ ls /; ■ ps ; ■ top ; ■ cat /etc/passwd ; 1 2 3
  • 12. Perché sono cosi forti:Filesystem hierarchy standard
  • 13. Perché sono cosi forti: ● Regular file [ - ]: un file che contiene dei dati ● Directory [ d ]: contiene una lista di nomi associati a degli inode. ● Symbolic link [ l ]: contiene un riferimento ad un altro file o directory. ● Char Device [ c ]: identifica una periferica ad accesso a caratteri. ● Block device [ b ]: identifica una periferica ad accesso a blocchi. ● fifo o pipe [ p ]:identifica una linea di comunicazione unidirezionale. ● socket [ s ]: identifica una linea di comunicazione bidirezionale. Everything is a file
  • 14. Perché sono cosi forti:Users and Permission ● Utenti e UID: /etc/shadow ● Gruppi e GUID: /etc/group ● Informazioni sui file: ls -n
  • 15. Perché sono cosi forti:Sudo users ● Root vs Sudo ● Aggiungere un nuovo utente: ○ # adduser nomeutente ● Aggiungerlo al gruppo degli utenti sudo ○ # usermod -aG sudo nomeutente ● visudo /etc/sudoers ○ Definire regole per utenti e gruppi
  • 16. Perché sono cosi forti:Installiamo! ● Sistemi Debian Like : APT, dpkg (.deb) ● RedHat: yum, DNF (rpm) ● Arch: Pacman ● Multi distribuzione: ○ Snap ○ Flatpack ○ Compilare ○ Script
  • 17. Perché sono cosi forti:Man : reference manuals ● Molti programmi hanno un manuale che ne descrive il suo comportamento e le opzioni. ● Proviamolo : ○ man ls ; ○ man ps ; ○ man semop; ○ man semget; ○ man top ; Navigare in man: ● premere “q” per uscire; ● premere “/” per entrare in modalità ricerca
  • 18. Perché sono cosi forti:Struttura di un comando base ls -a -l --color=no main.c ● ls : comando; ● -a,-l : opzioni in forma abbreviata; ● --color= : opzione in forma estesa; ● no : valore dell’opzione ● main.c valore in input al comando
  • 19. Perché sono cosi forti:La redirezione dell’I/O ● Cosa succede quando un comando viene lanciato? ○ Esso si aspetta di avere disponibili e già aperti i seguenti file : ■ standard input filedescriptor: 0 ■ output filedescriptor: 1 ■ error filedescriptor: 2 In un sistema GNU/LInux tutto è un FILE! Cosa è un fd ? -- man fopen
  • 20. Perché sono cosi forti:Redirezione dell’output sul file ● aprire due finestre di terminale ● nella prima ○ touch test ; ○ tail -f test . ● Nella seconda ○ echo “ciao” > test ; ○ echo “mondo” > test ; ○ echo “ciao mondo” >> test ; ○ cat test ⇐⇒ cat < test .
  • 21. Perché sono cosi forti:Proviamo tail con apache ● # apt-get update ● # apt-cache search apache ● # apt-get install apache2 ○ # service apache2 status ○ # service apache2 restart ○ tail -f < /var/log/apache2/access.log ● aprire nel browser 127.0.0.1 Il # indica che il comando deve essere eseguito come con i privilegi di superutente. Il comando sudo sta per super user do
  • 22. Perché sono cosi forti:Redirezione dell’I/O (NextLevel) ● nella prima finestra: ○ nc -lnvp 4444 ● nella seconda ○ cd /etc/ ○ bash -i >& /dev/tcp/127.0.0.1/4444 0>&1 ■ bash -i : esegue la shell in modalità interattiva ; ■ >&: “ redirezione lo standard output e lo standard error di bash sulla socket “, invio i risultati dei comandi a nc; ■ 0 >&1: “muove il file descriptor dello standard output della socket nello standard input del terminale “,(da i comandi a bash!). /dev/tcp/127.0.0.1/4444 è un file!!
  • 23. Perché sono cosi forti:Redirezione dell’output NextLevel
  • 24. Perché sono cosi forti:La pipe “|” ● La pipe ○ ls -al | grep "main.c" ○ ifconfig wlo1 | grep "inet " ○ ifconfig wlo1 | grep "inet " | awk '{print $2}'
  • 25. Perché sono cosi forti:Le variabili ● echo $PATH ● export TEST=”ciao mondo” ○ echo $TEST ○ unset $TEST ● export RES=$( ls -al /bin/ | grep mv | awk '{line=$1" "$3" "$9;print line}') ○ echo $RES
  • 26. Perché sono cosi forti:Script Uno script può contenere : ● una semplice lista di comandi ● funzioni ● cicli ● istruzioni condizionali
  • 27. Perché sono cosi forti:Base di uno Script La prima cosa da indicare in uno script è il percorso dell’interprete che si vuole utilizzare per eseguire i comandi preceduto dalla direttiva #! . Ad esempio se si vuole utilizzare bash: #! /bin/bash Ogni riga dello script, a meno che non presenti dei caratteri di escape, viene interpretata come un comando!
  • 28. Perché sono cosi forti:Commenti Le righe di commento iniziano con #. Ad esempio : #! Questo è un commento !
  • 29. Perché sono cosi forti:Variabili Bash è un linguaggio a tipizzazione dinamica, non è richiesto indicare il tipo dei dati che la variabile conterrà. Per dichiarare una variabile basta indicare il nome e il valore, utilizzando la seguente sintassi: NomeVariabile=Valore Attenzione agli spazi !! La sintassi di bash non prevede l’utilizzo degli spazi prima e dopo il segno di =
  • 30. Perché sono cosi forti:Variabili Per utilizzare una variabile si utilizza la seguenti sintassi : $NomeVariabile # Variabile X=2019 # Uso della variabile echo $X
  • 31. Perché sono cosi forti:Stringe Le stringhe possono andare sia tra “” che tra ‘’. Quando si usano i ‘’ il parser considera i caratteri speciali di bash come normali caratteri e non come direttive per la shell. Ad esempio : X=2019 echo “Anno : $X” #Stampa il valore della variabile X echo ‘Anno : $X’ #Stampa $X
  • 32. Perché sono cosi forti:Array Per definire un array basta sintassi : NomeArray=(valore1 valore2 ….) # Array X=(‘NaLUG’ ‘Workshop’ ‘2019’) # Uso echo ${X[*]}
  • 33. Perché sono cosi forti:Uso degli Array Per gestire un array basta di solito la seguente sintassi : ● ${arr[*]} # Tutti gli elementi nell’array ● ${!arr[*]} # Tutti gli indici dell’array ● ${#arr[*]} # Numero di elementi nell’array ● ${#arr[0]} # Length of item zero
  • 34. Perché sono cosi forti:Variabili di built-in ● $# : Numero di argomenti passati in input ● $$ : pid del comando corrente ; ● $0 : nome del comando in esecuzione ; ● $* (* ∈ N-{0} ) : variabili in ingresso ; ● $@ : Tutti i parametri in ingresso ; ● $? : Stato di uscita dell’ultimo comando.
  • 35. Perché sono cosi forti:Operazioni tra numeri Bash prevede una sintassi particolare per eseguire operazioni tra numeri interi, in particolare una qualsiasi operazione va tra $(( )) X=3 Y=4 #Stampo la somma tra i valori di X e Y echo “$(( $X+$Y))”
  • 36. Perché sono cosi forti:Comando Test Il comando test è utilizzato per valutare il valore di un'espressione logica. test “ciao” != “Ciao” test 1 == 2 [ “ciao” != “ciao” ] Il risultato viene in una delle variabili di built-in della shell. in particolare in $? viene salvato il valore di ritorno dell’ultimo comando eseguito ( 0 eseguito senza errori )
  • 37. Perché sono cosi forti:Come scrivere le condizioni?? man test
  • 38. Perché sono cosi forti:Struttura dell’ IF if [ condizione ] ; then elif [ condizione ] ; then else fi
  • 39. Perché sono cosi forti:Struttura del while e del for while [ condizione ] do done for i in $(seq 0 n) ; do done
  • 40. Perché sono cosi forti:Esempio Proviamo a realizzare uno script che ci fornisce l’indirizzo ip di un interfaccia di rete presente nel nostro sistema. L’interfaccia viene passata come parametro di input.
  • 41. Perché sono cosi forti:Esempio #!/bin/bash #Controllo il numero di parametri in input if [ $# -eq 1 ]; then INTERFACE=$1 IP=$(sudo ifconfig $INTERFACE | grep "inet " | awk '{print $2}') echo “L’ip dell’interfaccia $INTERFACE è $IP” fi chmod +x ./getIP.sh wlo1
  • 42. Perché sono cosi forti:Proviamo a fare uno script Contiamo il numero di occorrenze di una data parola nei file .txt in una cartella.
  • 43. Perché sono cosi forti:Continua ad esercitarti a casa ● https://explainshell.com ● http://www.pluto.it/files/ildp/HOWTO/Bash-Prog-Intro-HO WTO/Bash-Prog-Intro-HOWTO.html ● https://www.fis.uniroma3.it/CALCOLO_DOC/unix/appuntil inux/alndx.htm
  • 44. Perché sono cosi forti:Contattaci /NaLinuxUsersGroup http://www.nalug.net info@nalug.net
  • 45. Perché sono cosi forti:That’s all Folks! Attribuzione - Non commerciale - Condividi allo stesso modo Questa licenza permette a terzi di modificare, redistribuire, ottimizzare ed utilizzare la tua opera come base non commerciale, fino a che ti diano il credito e licenzino le loro nuove creazioni mediante i medesimi termini