Intro a Linux tenuta all'università degli studi di Napoli Federico II. Speaker: Gabriele Previtera - https://www.linkedin.com/in/gabriele-previtera-6657648b/
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?
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
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!!
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 )
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