SlideShare a Scribd company logo
 La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
Percorso 5 
Bash 
2
Software di sistema (GNU) 
CLI 
Applicazioni 
GUI 
Hardware 
Kernel (Linux) 
Motivazioni 
•Accesso (più) diretto al sistema 
•Sistemi remoti (ssh) 
•Operazioni ripetute (batch file) 
•Esecuzione automatica 
Percorso 5 
Bash 
3
BASH 
•Standard (*NIX, MacOS, Windows, …) 
•Versatile e potente 
•Programmabile 
Percorso 5 
Bash 
4
Percorso 5 
Bash 
5
Lavorare con la Console (inizio) 
•Control+Alt+F1 
•Usare l’applicazione «Terminale» 
Percorso 5 
Bash 
6
Lavorare con la Console (fine) 
•Alt+F7 
•Comando «Exit» 
•Control+D 
•Chiudere il terminale 
Percorso 5 
Bash 
7
Convenzioni 
•Alcuni comandi richiedono argomenti 
cd NOME_CARETELLA 
•Il comportamento di (quasi) tutti i programmi può essere modificato attraverso opzioni 
cat -n foo.txt 
•Opzioni corte vs. opzioni lunghe 
cat -ns foo.txt 
cat --number --squeeze-blank foo.txt 
Percorso 5 
Bash 
8
Comandi 
•Interni (builtin commands) 
•Esterni 
•Alias 
Percorso 5 
Bash 
9
Aiuto / Informazioni Aggiuntive 
•Documentazione in /usr/share/doc 
–E.g.: less /usr/share/doc/bash/INTRO.gz 
Percorso 5 
Bash 
10
Aiuto / Informazioni Aggiuntive 
•Informazioni su di un comando 
comando --help (oppure: comando -h) 
man comando (e.g.: man man) 
whatis comando 
apropos comando 
type [-a] comando 
which comando 
info [ comando/opzioni ] 
Percorso 5 
Bash 
11
Il Prompt 
•Il prompt standard mostra 
–nome utente «@» nome macchina «:» cartella corrente «$» 
(ovvero «#» se l’utente è l’amministratore, ed è possibile fare molti danni) 
Percorso 5 
Bash 
12
Cartelle speciali 
•Punto «.» 
–la cartella corrente 
•Punti-punto «..» 
–la cartella padre della corrente 
•Tilde «~» 
–la propria cartella home (di solito /home/utente) 
•Tilde + nome «~foo» 
–la cartella home di foo (di solito /home/foo) 
Percorso 5 
Bash 
13
Edit della linea di comando 
•Bash permette di usare le frecce del cursore, e combinazioni di tasti usate da Emacs 
–Control+A, Control+E, Meta+f, Meta+b, … 
•«Freccia su»/«Freccia giù» permettono di muoversi fra i comandi precedenti 
Percorso 5 
Bash 
14
Autocompletamento 
Percorso 5 
Bash 
15
Control 
•Control+C 
–Invia SIGINT al processo corrente 
•Control+D 
–End Of File 
–Equivalente a Control+Z in MS-DOS/Windows 
Percorso 5 
Bash 
16
Variabili 
•La shell permette di definire «variabili» 
•Dollaro «$» per usare le variabili definite 
•Doppi apici vs. apice singolo 
Percorso 5 
Bash 
17
Variabili 
•Il comportamento e le opzioni di default della shell e di numerosi comandi sono definiti attraverso variabili 
•L’insieme delle variabili è detto «ambiente» (environment) 
•Usare il comando «set» per visualizzare le circa 50 variabili definite nell’ambiente corrente 
Percorso 5 
Bash 
18
$PATH 
•I comandi esterni vengono cercati nelle cartelle specificate nella variabile PATH 
•È possibile specificare in modo esplicito il path dei comandi (relativo o assoluto) 
Percorso 5 
Bash 
19
Alias 
•È possibile creare «alias» ai comandi (e.g., per memorizzare le opzioni usate sempre) 
•«alias» senza parametri mostra tutti gli alias 
Percorso 5 
Bash 
20
Nomi dei file 
•I sistemi POSIX mettono poche restrizioni ai nomi dei file, tuttavia è meglio evitare: 
•spazi, tab e «a capo» 
•caratteri che hanno significati convenzionali 
/  “ ' * ; ? [ ] ( ) ~ ! $ { } < > # @ & | 
•lettere al di fuori dal set ASCII base 
e.g.: ω è ë ê æ … 
Percorso 5 
Bash 
21
Nomi dei file 
•I nomi che contengono spazi devo essere racchiusi da apici o doppi apici 
Percorso 5 
Bash 
22
Esercizio 
•A cosa servono i comandi «basename» e «dirname»? 
–usare il manuale 
–fare alcune prove 
Percorso 5 
Bash 
23
Contenuto delle cartelle 
ls [-laAs] [ f1 … fN ] 
–mostra contenuto di una cartella 
–Nota: in Ubuntu 12.04 il comando ha 44 opzioni diverse 
Percorso 5 
Bash 
24
Significato del «formato lungo» 
Percorso 5 
Bash 
25 
tipo 
permessi user group world 
numero link 
possessore 
gruppo 
dimensione 
ultima modifica 
nome 
anche i colori aiutano a distinguere i vari tipi
Tipo dei file 
file f1 [ … fN ] 
–determina il tipo di file utilizzando vari metodi: informazioni del filesystem; magia; riconoscimento elementi tipici dei linguaggi 
–man magic per maggiori informazioni sulla magia (e sui magic number) 
Percorso 5 
Bash 
26
Wildcards («globbing») 
•Wildcards: * ? [ ] - 
•A differenza di MS-DOS/Windows l’espansione è fatta dalla shell 
Percorso 5 
Bash 
27
Comandi precedenti 
history 
–mostra i comandi precedenti 
•Nota: è possibile usare e modificare i vecchi comandi con sequenze che iniziano con «!» e «^» 
–E.g.: !-2:s/foo/bar/g 
–man history 
Percorso 5 
Bash 
28
Navigazione 
cd [dir] 
–cambia cartella 
pwd 
–mostra la cartella corrente 
Percorso 5 
Bash 
29
Esempio 
/ 
/tmp/ 
/tmp/dir1/ 
/tmp/dir1/file.txt 
/tmp/dir2/ 
/tmp/dir2/file.txt 
Percorso 5 
Bash 
30 
/$ cd /tmp/dir1
Esempio 
/ 
/tmp/ 
/tmp/dir1/ 
/tmp/dir1/file.txt 
/tmp/dir2/ 
/tmp/dir2/file.txt 
Percorso 5 
Bash 
31 
/$ cd ../dir2
Esempio 
/ 
/tmp/ 
/tmp/dir1/ 
/tmp/dir1/file.txt 
/tmp/dir2/ 
/tmp/dir2/file.txt 
Percorso 5 
Bash 
32 
/$ cd ../..
Esempio 
/ 
/tmp/ 
/tmp/dir1/ 
/tmp/dir1/file.txt 
/tmp/dir2/ 
/tmp/dir2/file.txt 
Percorso 5 
Bash 
33 
/$ cd /tmp/dir1/./../dir2/..
Creazione 
touch f1 [ … fN ] 
–tocca (crea o aggiorna l’istante dell’ultima modifica) 
mkdir [-p] dir 
–crea una direcory 
Percorso 5 
Bash 
34
Copia/Collegamento 
cp [-pr] f1 f2 
cp [-pr] f1 [ … fN ] dir 
–copia file 
ln [-s] f1 [ f2 ] 
ln [-s] f1 [ … fN ] dir 
–crea un collegamento 
–nessun hard link a cartella, o fra filesystem diversi 
–i dati sono cancellati se non più linkati da nessun file 
Percorso 5 
Bash 
35
Cancellazione 
rm [-rf] f1 [ … fN ] 
–rimuove file 
–alias comune: « alias rm='rm -I' » 
rmdir dir 
–rimuove una cartella vuota 
Percorso 5 
Bash 
36
Esercizi 
•Creare un file ~/foo/uno.txt 
–creare un link simbolico ~/bar/due.txt 
–creare un link ~/baz/tre.txt 
•Modificare uno dei file ed osservare i cambianti negli altri due 
•Rimuovere uno.txt 
–cosa succede a due.txt e tre.txt 
Percorso 5 
Bash 
37
Rinominare/Spostare 
mv f1 f2 
mv f1 [ … fN ] dir 
–muove (rinomina o sposta) file 
Percorso 5 
Bash 
38
Visualizzare 
cat [-ns] [ f1 … fN ] 
–concatena e mostra file 
less [ f1 … fN ] 
–mostra file (interattivo) 
–usare «h» per un aiuto su comandi ed opzioni dentro less 
reset 
–(re-)inizializza il terminale 
Percorso 5 
Bash 
39
Visualizzare 
head f1 [ … fN ] 
–mostra le prime 10 righe dei file 
tail f1 [ … fN ] 
–mostra le ultime 10 righe dei file 
sort [-nu] [ f1 … fN ] 
–visualizza i file dopo aver ordinato le righe 
Percorso 5 
Bash 
40
Esercizi 
•Quali sono i tipi di filesystem disponibili sul vostro sistema? 
–Tip: esamina il file filesystems in /proc 
•Quali sono le caratteristiche della CPU? 
–Tip: esamina il file cpuinfo e meminfo in /proc 
•Quali sono gli utenti? 
–Tip: ogni utente ha una cartella in /home 
Percorso 5 
Bash 
41
Output base 
echo [-n] [ testo ] 
–stampa il testo a video 
clear 
–cancella lo schermo 
–equivalente a «Control+L» 
Percorso 5 
Bash 
42
Informazione sull’utente 
who [am I] 
–chi sono gli utenti attivi nel sistema 
–chi sono io? 
groups 
–gruppi a cui appartiene l’utente 
Percorso 5 
Bash 
43
Modificare permessi 
chmod [-R] modo [ f1 … fn ] 
–cambia permessi 
–chi: u g o a 
–modifica: + - = 
–permessi: r w x X 
–speciali: s S t 
Percorso 5 
Bash 
44
Modificare permessi 
chown utente[:gruppo] f1 [ … fn ] 
–cambia owner 
chgrp gruppo f1 [ … fn ] 
–cambia gruppo 
Percorso 5 
Bash 
45
Root 
•L’utente root è l’amministratore del sistema 
–Nessuna limitazione 
–Potenzialmente molto rischioso 
sudo comando 
–esegue il singolo comando con i privilegi di root 
Percorso 5 
Bash 
46 
Courtesy XKCD.com
sudo 
Percorso 5 
Bash 
47 
“With great power there must also come great responsibility” — Stan Lee 
Immagine di JuliusC1224 (http://juliusc1224.deviantart.com/art/Spider-Man-331969812)
Informazioni 
uname [-a] 
–informazioni sul sistema 
lsb_release [-a] 
–informazioni sulla release 
•File e cartelle in /proc 
Percorso 5 
Bash 
48
Dimensione 
wc[f1 … fN] 
–dimensione dei file in righe, parole, caratteri 
du[dir] 
–dimensione dei file di una cartella 
Percorso 5 
Bash 
49
Mountpoint 
mount 
–visualizza i filesystem montati 
–per montare nuovi occorrono i privilegi di root 
Percorso 5 
Bash 
50
Eseguire comandi 
•Quando si esegue un comando la shell 
–crea un nuovo processo (fork) in cui esegue il comando 
–attende finché il nuovo processo non termina 
•specificando «exec comando» il comando viene eseguito nel processo corrente 
–quando il comando termina, la shell ormai non esiste più 
–«exec echo addio» è un modo per terminare la shell 
Percorso 5 
Bash 
51
Sleep/Date 
sleep sec 
–interrompe l’esecuzione fino all’istante ora corrente + sec secondi 
date 
–mostra la data e l’ora corrente 
Percorso 5 
Bash 
52
Eseguire comandi 
•Più comandi possono essere specificati sulla stessa linea separati con «;» 
Percorso 5 
Bash 
53
Eseguire comandi 
•Comandi racchiusi fra parentesi tonde «( )» sono eseguiti in una subshell (sotto-shell) 
–la subshell eredita l’environment della shell madre 
–ma le modifiche sono locali 
Percorso 5 
Bash 
54
Processi e Job 
•Ogni processo ha un numero 
–PID 
•Ogni processo è collegato ad un utente 
–UID 
Percorso 5 
Bash 
55
Processi e Job 
•Altre informazioni 
–commandline 
–tempo 
–memoria 
–priorità 
–nice level 
Percorso 5 
Bash 
56
Gentilezza 
nice num cmd 
–esegue un comando in modo più gentile 
renice num proc 
–rende un processo più gentile 
Percorso 5 
Bash 
57
Controllo processi 
ps [-lA] [-f f] 
–mostra informazioni sui processi 
kill [-9] proc1 [ … procN ] 
–termina i processi 
top 
htop 
–mostra informazioni sui processi (interattivo) 
Percorso 5 
Bash 
58
ps -l 
Percorso 5 
Bash 
59 
stato 
flag 
PID del padre 
utilizzo processore 
priorità 
valore di nice 
funzione del kernel 
terminale 
tempo 
comando 
dimensione 
PID 
utente
--forest e -H 
Percorso 5 
Bash 
60
Controllo job 
jobs 
–mostra informazioni sui job in esecuzioni o sospesi 
fg [%j] 
bg [%j] 
–riprende l’esecuzione del job in primo/secondo piano 
kill [-9] %j1 [ … %jN ] 
–termina i job 
Percorso 5 
Bash 
61
Sospendere l’esecuzione 
•L’esecuzione di un comando può essere sospesa con «Control+Z» 
•L’esecuzione può essere ripresa 
–In primo piano con «fg» 
–In secondo piano (background) con «bg» 
Percorso 5 
Bash 
62
Sospendere l’esecuzione 
•L’esecuzione di un comando può essere sospesa con «Control+Z» 
•L’esecuzione può essere ripresa 
–In primo piano con «fg» 
–In secondo piano (background) con «bg» 
Percorso 5 
Bash 
63 
numero del job
Sospendere l’esecuzione 
•Specificando «&» al termine del comando questo viene eseguito subito in background 
Percorso 5 
Bash 
64
Sospendere l’esecuzione 
•Specificando «&» al termine del comando questo viene eseguito in background 
Percorso 5 
Bash 
65 
job precedente 
job corrente
Sospendere l’esecuzione 
•Il comando «wait» attende che tutti i processi in background siano terminati 
Percorso 5 
Bash 
66
Albero (ascii-art) 
Percorso 5 
Bash 
67
Redirezione 
Percorso 5 
Bash 
68 
process 
stdin 
stdout 
stderr
Redirezione 
$ comando parametri > file 
$ comando parametri >> file 
$ comando parametri < file 
Percorso 5 
Bash 
69
Redirezione (stdout vs. stderr) 
$ comando parametri > file 
$ comando parametri > file 2> file2 
$ comando parametri > file 2>&1 
$ comando parametri >& file 
Percorso 5 
Bash 
70
Pipe 
Percorso 5 
Bash 
71 
proc1 
stdin 
stdout 
stderr 
proc2 
stdin 
stdout 
stderr
Pipe 
$ comando1 parametri | comando2 parametri 
$ comando1 parametri |& comando2 parametri 
Percorso 5 
Bash 
72
Pipe 
Percorso 5 
Bash 
73
Esercizio 
•Elencare tutti i file presenti in una directory in ordine di dimensione 
–usando le opzioni di ls (man) 
–usando il comando «sort» 
Percorso 5 
Bash script 
74
Redirezione 
tee [-a] file 
–duplica lo stdin salvandone una copia in file 
–utile per salvare una copia di quello che viene visualizzato o trasmesso nella pipe 
Percorso 5 
Bash 
75
Archivi (tarball) 
•È comune distribuire materiale sotto forma di archivio (come Zip o Tar in windows) 
•Tradizionalmente nei sistemi UN*X si usano due programmi in pipe: 
–uno per trasformare più file in un unico file (tar) 
–uno per comprimere (gzip, bzip2, o xzip) 
Percorso 5 
Bash 
76
Archivi (tar) 
tar op archivio f1 … fN 
–operazione: c x t f [v] 
–se il nome dell’archivio è meno «-» usa lo stdout 
Percorso 5 
Bash 
77
Archivi (compressione) 
prog [-9vd] [f1 … fN] 
prog [-9vd] -c 
–comprime/decomprime file, modifica l’estensione in modo opportuno 
–con l’opzione -c comprime/decomprime lo stdin e scrive sullo stdout 
–i programmi sono: bzip2 (molto diffuso); gzip (minime risorse); xz (nuovo) 
Percorso 5 
Bash 
78
Archivi 
Percorso 5 
Bash 
79
Archivi (tar) 
•È possibile specificare la compressione direttamente nei parametri di tar 
–z per usare gzip 
–j per usare bzip2 
–J per usare xz 
Percorso 5 
Bash 
80
Archivi (solo decompressione) 
prog [-v] [f1 … fN] 
prog [-v] -c 
–decomprime file, modifica l’estensione in modo opportuno 
–con l’opzione -c decomprime lo stdin sullo stdout 
–i programmi sono: bunzip2; gunzip; unxz 
Percorso 5 
Bash 
81
Cercare file 
find [-xdev] dir [e1 … eN] 
–cerca nell’albero del filesystem a partire da dir 
–applica espressioni e1 … eN 
–con xdev non esce dal filesystem radice 
Percorso 5 
Bash 
82
Cercare file 
Esempi 
find ~ -name foo -print 
find . -name "*foo*" 
find ~ -name -type d -iname "*bar*" -ls 
find . -name "*.o" -print -exec rm '{}' ; 
find / -size +100M 
find /usr -executable 
find /etc /usr/local/etc ! -readable 
Percorso 5 
Bash 
83
Cercare file 
grep [-iv] pattern [f1 … fN] 
–filtra le righe che contengono un pattern 
Percorso 5 
Bash 
84
Esercizio 
•Cercare tutti i file di proprietà dell’utente corrente 
–Tip: l’opzione non è stata spiegata, usare «man find» 
Percorso 5 
Bash script 
85
Regex 
•Una espressione regolare (regular expression, regexp, regex, RE) è una stringa che identifica un insieme di stringhe 
•Operazioni di patten matching 
•Slang: “la stringa meccia la regex” 
Percorso 5 
Bash 
86
Regex: simboli base 
•Un carattere 
–quel carattere 
•Punto «.» 
–un carattere qualsiasi 
Percorso 5 
Bash 
87 
ma..a 
oh mamma mia! 
mamma
Regex: simboli base 
•Cappello «^» e dollaro «$» 
–rispettivamente, inizio e fine stringa 
Percorso 5 
Bash 
88 
^ma..a$ 
oh mamma mia! 
mamma
Regex: simboli base 
•Asterisco «*» 
–un numero qualsiasi di volte, anche zero 
•Più «+» 
–una o più volte 
•Punto interrogativo «?» 
–zero o una volta 
Percorso 5 
Bash 
89 
ma?m+z*ak? 
oh mamma mia! 
mamma
Regex: simboli base 
•Parentesi quadre «[ … ]» 
–uno qualsiasi dei caratteri specificati 
–se x-y, allora uno qualsiasi dei caratteri fra x e y 
–se il primo carattere dopo «[» è «^», allora un qualsiasi carattere non specificato 
Percorso 5 
Bash 
90 
^[A-Z]a?o?[mn]+a$ 
Mamma 
Nonna
Regex 
Percorso 5 
Bash 
91
Cercare file 
grep [-iv] -e regex [f1 … fN] 
–filtra le righe che contengono l’espressione regolare 
Percorso 5 
Bash 
92
These slides are licensed under a Creative Commons 
Attribution Non Commercial Share Alike 4.0 International 
To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ 
Versione in Italiano: 
https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it

More Related Content

PDF
Command Terminal Linux
PDF
PDF
As it e icloud
PDF
Linux Kernel, driver e compilazione
ODP
Linux Capabilities - ita - v2.1.5 - compatta
PDF
Moduli del kernel - Boot del sistema
ODP
Lezione corso Base GNU/Linux
PDF
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali
Command Terminal Linux
As it e icloud
Linux Kernel, driver e compilazione
Linux Capabilities - ita - v2.1.5 - compatta
Moduli del kernel - Boot del sistema
Lezione corso Base GNU/Linux
Cosa è Gnu/Linux - Breve storia - Concetti fondamentali

What's hot (12)

PDF
Shell unix
PDF
Pool di macchine Condor con utilizzo di Checkpoint Server
PDF
Lug Roma3 Corso Linux Avanzato
PDF
Gestione dischi - File system - LVM
PDF
Lug Roma3 Corso Linux Base
PDF
Lezione Quattro
PPTX
Retropie - il futuro nel passato
PPT
X2 Linux Riassunti
PDF
MontelLUG - Conferenze 2007 - Introduzione a RSync
ODP
#!/bin/bash ed esempi di scripting
PDF
Battaglia Navale
PDF
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
Shell unix
Pool di macchine Condor con utilizzo di Checkpoint Server
Lug Roma3 Corso Linux Avanzato
Gestione dischi - File system - LVM
Lug Roma3 Corso Linux Base
Lezione Quattro
Retropie - il futuro nel passato
X2 Linux Riassunti
MontelLUG - Conferenze 2007 - Introduzione a RSync
#!/bin/bash ed esempi di scripting
Battaglia Navale
Scripting - Esecuzione condizionale - Costrutti iterativi - Variabili (quoti...
Ad

Viewers also liked (16)

PDF
Graphs: Cycles
PDF
Introduction to JDBC and database access in web applications
PDF
Programming with JavaFX
PDF
Tecnologie per la disabilita' nella formazione ingegneristica di base
PDF
Introduction to Graphs
PDF
Approcci ed applicazioni per l’Ambient Intelligence
PDF
AmI 2015 - Course Introduction
PDF
Ambient intelligence - an overview
PDF
Introduzione ai Web Information Systems
PDF
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
PDF
La percezione sensoriale
PDF
Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
PDF
Java collections framework
PDF
Introduction to JavaFX
PDF
Esercizi di programmazione in C (v. 2.01)
PDF
Programmazione in C (corso 12BHD Informatica)
Graphs: Cycles
Introduction to JDBC and database access in web applications
Programming with JavaFX
Tecnologie per la disabilita' nella formazione ingegneristica di base
Introduction to Graphs
Approcci ed applicazioni per l’Ambient Intelligence
AmI 2015 - Course Introduction
Ambient intelligence - an overview
Introduzione ai Web Information Systems
Tecnologie e applicazioni domotiche: potenzialità ed approcci industriali a c...
La percezione sensoriale
Primi passi - VirtualBox - Installazione Ubuntu 12.04 LTS - Shell
Java collections framework
Introduction to JavaFX
Esercizi di programmazione in C (v. 2.01)
Programmazione in C (corso 12BHD Informatica)
Ad

Similar to La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari (20)

PDF
As it e icloud
PDF
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
ODP
Seminario introduzione all'uso del terminale e della bash in Linux
PDF
Linux day 2016 la shell in linux
PDF
Log files - Approcci al Troubleshooting
PDF
Comandi bash
PDF
Bash intro
PDF
Motori di ricerca per cercare file in Linux
PDF
Linux@Unina
PDF
Chi ha paura della command-line? - WordCamp Roma 2018
PPTX
Sistema Operativo - LInux - Modulo 2.1
PDF
SSH base - Configurazione di sistema da terminale
PDF
Guida al sistema operativo Windows di Microsoft
PPT
Guida al Computer - Lezione 159 - Windows 8.1 Update - Prompt dei comandi
PDF
Introduzione User Mode Linux
PDF
Linux & Open Source : Lezione Quattro
PPTX
Linux shell
PPTX
Linux shell
PDF
Richiami su Linux - Webmin - Reti di calcolatori
PDF
Introduzione Alla Uml Mconsole
As it e icloud
Condivisione di dischi - NFS - Reti miste Windows/Linux - SMB e NetBIOS - Sam...
Seminario introduzione all'uso del terminale e della bash in Linux
Linux day 2016 la shell in linux
Log files - Approcci al Troubleshooting
Comandi bash
Bash intro
Motori di ricerca per cercare file in Linux
Linux@Unina
Chi ha paura della command-line? - WordCamp Roma 2018
Sistema Operativo - LInux - Modulo 2.1
SSH base - Configurazione di sistema da terminale
Guida al sistema operativo Windows di Microsoft
Guida al Computer - Lezione 159 - Windows 8.1 Update - Prompt dei comandi
Introduzione User Mode Linux
Linux & Open Source : Lezione Quattro
Linux shell
Linux shell
Richiami su Linux - Webmin - Reti di calcolatori
Introduzione Alla Uml Mconsole

Recently uploaded (9)

PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 FRIENDS GLOBAL - CẢ NĂM (24...
PPTX
Copia di PROGETTO VIOLENZA sulle donne PCTO
PDF
GIÁO ÁN CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512 (2 CỘT) NĂM HỌC ...
PDF
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 EXPLORE NEW WORLDS - CẢ NĂM...
PDF
16 CHUYÊN ĐỀ BÀI TẬP ÔN THI TUYỂN SINH VÀO 10 - MÔN TIẾNG ANH - THEO FORM ĐỀ ...
PDF
CHUYÊN ĐỀ BỔ TRỢ NGỮ ÂM, TỪ VỰNG NÂNG CAO - TIẾNG ANH 9 VÀ ÔN THI VÀO LỚP 10 ...
PDF
GIÁO ÁN KẾ HOẠCH BÀI DẠY CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512...
PPTX
SLIDE-DE-CURSOS-OssssFICIAL-DA-EGEPI-.pptx
PDF
Mazzoni-Reggi-2012-Effetto-Lucifero-Su-Wikipedia.pdf
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 FRIENDS GLOBAL - CẢ NĂM (24...
Copia di PROGETTO VIOLENZA sulle donne PCTO
GIÁO ÁN CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512 (2 CỘT) NĂM HỌC ...
BÀI TẬP TEST BỔ TRỢ THEO TỪNG UNIT - TIẾNG ANH 10 EXPLORE NEW WORLDS - CẢ NĂM...
16 CHUYÊN ĐỀ BÀI TẬP ÔN THI TUYỂN SINH VÀO 10 - MÔN TIẾNG ANH - THEO FORM ĐỀ ...
CHUYÊN ĐỀ BỔ TRỢ NGỮ ÂM, TỪ VỰNG NÂNG CAO - TIẾNG ANH 9 VÀ ÔN THI VÀO LỚP 10 ...
GIÁO ÁN KẾ HOẠCH BÀI DẠY CHÍNH KHÓA TIẾNG ANH 9 - CẢ NĂM - THEO CÔNG VĂN 5512...
SLIDE-DE-CURSOS-OssssFICIAL-DA-EGEPI-.pptx
Mazzoni-Reggi-2012-Effetto-Lucifero-Su-Wikipedia.pdf

La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

  • 3. Software di sistema (GNU) CLI Applicazioni GUI Hardware Kernel (Linux) Motivazioni •Accesso (più) diretto al sistema •Sistemi remoti (ssh) •Operazioni ripetute (batch file) •Esecuzione automatica Percorso 5 Bash 3
  • 4. BASH •Standard (*NIX, MacOS, Windows, …) •Versatile e potente •Programmabile Percorso 5 Bash 4
  • 6. Lavorare con la Console (inizio) •Control+Alt+F1 •Usare l’applicazione «Terminale» Percorso 5 Bash 6
  • 7. Lavorare con la Console (fine) •Alt+F7 •Comando «Exit» •Control+D •Chiudere il terminale Percorso 5 Bash 7
  • 8. Convenzioni •Alcuni comandi richiedono argomenti cd NOME_CARETELLA •Il comportamento di (quasi) tutti i programmi può essere modificato attraverso opzioni cat -n foo.txt •Opzioni corte vs. opzioni lunghe cat -ns foo.txt cat --number --squeeze-blank foo.txt Percorso 5 Bash 8
  • 9. Comandi •Interni (builtin commands) •Esterni •Alias Percorso 5 Bash 9
  • 10. Aiuto / Informazioni Aggiuntive •Documentazione in /usr/share/doc –E.g.: less /usr/share/doc/bash/INTRO.gz Percorso 5 Bash 10
  • 11. Aiuto / Informazioni Aggiuntive •Informazioni su di un comando comando --help (oppure: comando -h) man comando (e.g.: man man) whatis comando apropos comando type [-a] comando which comando info [ comando/opzioni ] Percorso 5 Bash 11
  • 12. Il Prompt •Il prompt standard mostra –nome utente «@» nome macchina «:» cartella corrente «$» (ovvero «#» se l’utente è l’amministratore, ed è possibile fare molti danni) Percorso 5 Bash 12
  • 13. Cartelle speciali •Punto «.» –la cartella corrente •Punti-punto «..» –la cartella padre della corrente •Tilde «~» –la propria cartella home (di solito /home/utente) •Tilde + nome «~foo» –la cartella home di foo (di solito /home/foo) Percorso 5 Bash 13
  • 14. Edit della linea di comando •Bash permette di usare le frecce del cursore, e combinazioni di tasti usate da Emacs –Control+A, Control+E, Meta+f, Meta+b, … •«Freccia su»/«Freccia giù» permettono di muoversi fra i comandi precedenti Percorso 5 Bash 14
  • 16. Control •Control+C –Invia SIGINT al processo corrente •Control+D –End Of File –Equivalente a Control+Z in MS-DOS/Windows Percorso 5 Bash 16
  • 17. Variabili •La shell permette di definire «variabili» •Dollaro «$» per usare le variabili definite •Doppi apici vs. apice singolo Percorso 5 Bash 17
  • 18. Variabili •Il comportamento e le opzioni di default della shell e di numerosi comandi sono definiti attraverso variabili •L’insieme delle variabili è detto «ambiente» (environment) •Usare il comando «set» per visualizzare le circa 50 variabili definite nell’ambiente corrente Percorso 5 Bash 18
  • 19. $PATH •I comandi esterni vengono cercati nelle cartelle specificate nella variabile PATH •È possibile specificare in modo esplicito il path dei comandi (relativo o assoluto) Percorso 5 Bash 19
  • 20. Alias •È possibile creare «alias» ai comandi (e.g., per memorizzare le opzioni usate sempre) •«alias» senza parametri mostra tutti gli alias Percorso 5 Bash 20
  • 21. Nomi dei file •I sistemi POSIX mettono poche restrizioni ai nomi dei file, tuttavia è meglio evitare: •spazi, tab e «a capo» •caratteri che hanno significati convenzionali / “ ' * ; ? [ ] ( ) ~ ! $ { } < > # @ & | •lettere al di fuori dal set ASCII base e.g.: ω è ë ê æ … Percorso 5 Bash 21
  • 22. Nomi dei file •I nomi che contengono spazi devo essere racchiusi da apici o doppi apici Percorso 5 Bash 22
  • 23. Esercizio •A cosa servono i comandi «basename» e «dirname»? –usare il manuale –fare alcune prove Percorso 5 Bash 23
  • 24. Contenuto delle cartelle ls [-laAs] [ f1 … fN ] –mostra contenuto di una cartella –Nota: in Ubuntu 12.04 il comando ha 44 opzioni diverse Percorso 5 Bash 24
  • 25. Significato del «formato lungo» Percorso 5 Bash 25 tipo permessi user group world numero link possessore gruppo dimensione ultima modifica nome anche i colori aiutano a distinguere i vari tipi
  • 26. Tipo dei file file f1 [ … fN ] –determina il tipo di file utilizzando vari metodi: informazioni del filesystem; magia; riconoscimento elementi tipici dei linguaggi –man magic per maggiori informazioni sulla magia (e sui magic number) Percorso 5 Bash 26
  • 27. Wildcards («globbing») •Wildcards: * ? [ ] - •A differenza di MS-DOS/Windows l’espansione è fatta dalla shell Percorso 5 Bash 27
  • 28. Comandi precedenti history –mostra i comandi precedenti •Nota: è possibile usare e modificare i vecchi comandi con sequenze che iniziano con «!» e «^» –E.g.: !-2:s/foo/bar/g –man history Percorso 5 Bash 28
  • 29. Navigazione cd [dir] –cambia cartella pwd –mostra la cartella corrente Percorso 5 Bash 29
  • 30. Esempio / /tmp/ /tmp/dir1/ /tmp/dir1/file.txt /tmp/dir2/ /tmp/dir2/file.txt Percorso 5 Bash 30 /$ cd /tmp/dir1
  • 31. Esempio / /tmp/ /tmp/dir1/ /tmp/dir1/file.txt /tmp/dir2/ /tmp/dir2/file.txt Percorso 5 Bash 31 /$ cd ../dir2
  • 32. Esempio / /tmp/ /tmp/dir1/ /tmp/dir1/file.txt /tmp/dir2/ /tmp/dir2/file.txt Percorso 5 Bash 32 /$ cd ../..
  • 33. Esempio / /tmp/ /tmp/dir1/ /tmp/dir1/file.txt /tmp/dir2/ /tmp/dir2/file.txt Percorso 5 Bash 33 /$ cd /tmp/dir1/./../dir2/..
  • 34. Creazione touch f1 [ … fN ] –tocca (crea o aggiorna l’istante dell’ultima modifica) mkdir [-p] dir –crea una direcory Percorso 5 Bash 34
  • 35. Copia/Collegamento cp [-pr] f1 f2 cp [-pr] f1 [ … fN ] dir –copia file ln [-s] f1 [ f2 ] ln [-s] f1 [ … fN ] dir –crea un collegamento –nessun hard link a cartella, o fra filesystem diversi –i dati sono cancellati se non più linkati da nessun file Percorso 5 Bash 35
  • 36. Cancellazione rm [-rf] f1 [ … fN ] –rimuove file –alias comune: « alias rm='rm -I' » rmdir dir –rimuove una cartella vuota Percorso 5 Bash 36
  • 37. Esercizi •Creare un file ~/foo/uno.txt –creare un link simbolico ~/bar/due.txt –creare un link ~/baz/tre.txt •Modificare uno dei file ed osservare i cambianti negli altri due •Rimuovere uno.txt –cosa succede a due.txt e tre.txt Percorso 5 Bash 37
  • 38. Rinominare/Spostare mv f1 f2 mv f1 [ … fN ] dir –muove (rinomina o sposta) file Percorso 5 Bash 38
  • 39. Visualizzare cat [-ns] [ f1 … fN ] –concatena e mostra file less [ f1 … fN ] –mostra file (interattivo) –usare «h» per un aiuto su comandi ed opzioni dentro less reset –(re-)inizializza il terminale Percorso 5 Bash 39
  • 40. Visualizzare head f1 [ … fN ] –mostra le prime 10 righe dei file tail f1 [ … fN ] –mostra le ultime 10 righe dei file sort [-nu] [ f1 … fN ] –visualizza i file dopo aver ordinato le righe Percorso 5 Bash 40
  • 41. Esercizi •Quali sono i tipi di filesystem disponibili sul vostro sistema? –Tip: esamina il file filesystems in /proc •Quali sono le caratteristiche della CPU? –Tip: esamina il file cpuinfo e meminfo in /proc •Quali sono gli utenti? –Tip: ogni utente ha una cartella in /home Percorso 5 Bash 41
  • 42. Output base echo [-n] [ testo ] –stampa il testo a video clear –cancella lo schermo –equivalente a «Control+L» Percorso 5 Bash 42
  • 43. Informazione sull’utente who [am I] –chi sono gli utenti attivi nel sistema –chi sono io? groups –gruppi a cui appartiene l’utente Percorso 5 Bash 43
  • 44. Modificare permessi chmod [-R] modo [ f1 … fn ] –cambia permessi –chi: u g o a –modifica: + - = –permessi: r w x X –speciali: s S t Percorso 5 Bash 44
  • 45. Modificare permessi chown utente[:gruppo] f1 [ … fn ] –cambia owner chgrp gruppo f1 [ … fn ] –cambia gruppo Percorso 5 Bash 45
  • 46. Root •L’utente root è l’amministratore del sistema –Nessuna limitazione –Potenzialmente molto rischioso sudo comando –esegue il singolo comando con i privilegi di root Percorso 5 Bash 46 Courtesy XKCD.com
  • 47. sudo Percorso 5 Bash 47 “With great power there must also come great responsibility” — Stan Lee Immagine di JuliusC1224 (http://juliusc1224.deviantart.com/art/Spider-Man-331969812)
  • 48. Informazioni uname [-a] –informazioni sul sistema lsb_release [-a] –informazioni sulla release •File e cartelle in /proc Percorso 5 Bash 48
  • 49. Dimensione wc[f1 … fN] –dimensione dei file in righe, parole, caratteri du[dir] –dimensione dei file di una cartella Percorso 5 Bash 49
  • 50. Mountpoint mount –visualizza i filesystem montati –per montare nuovi occorrono i privilegi di root Percorso 5 Bash 50
  • 51. Eseguire comandi •Quando si esegue un comando la shell –crea un nuovo processo (fork) in cui esegue il comando –attende finché il nuovo processo non termina •specificando «exec comando» il comando viene eseguito nel processo corrente –quando il comando termina, la shell ormai non esiste più –«exec echo addio» è un modo per terminare la shell Percorso 5 Bash 51
  • 52. Sleep/Date sleep sec –interrompe l’esecuzione fino all’istante ora corrente + sec secondi date –mostra la data e l’ora corrente Percorso 5 Bash 52
  • 53. Eseguire comandi •Più comandi possono essere specificati sulla stessa linea separati con «;» Percorso 5 Bash 53
  • 54. Eseguire comandi •Comandi racchiusi fra parentesi tonde «( )» sono eseguiti in una subshell (sotto-shell) –la subshell eredita l’environment della shell madre –ma le modifiche sono locali Percorso 5 Bash 54
  • 55. Processi e Job •Ogni processo ha un numero –PID •Ogni processo è collegato ad un utente –UID Percorso 5 Bash 55
  • 56. Processi e Job •Altre informazioni –commandline –tempo –memoria –priorità –nice level Percorso 5 Bash 56
  • 57. Gentilezza nice num cmd –esegue un comando in modo più gentile renice num proc –rende un processo più gentile Percorso 5 Bash 57
  • 58. Controllo processi ps [-lA] [-f f] –mostra informazioni sui processi kill [-9] proc1 [ … procN ] –termina i processi top htop –mostra informazioni sui processi (interattivo) Percorso 5 Bash 58
  • 59. ps -l Percorso 5 Bash 59 stato flag PID del padre utilizzo processore priorità valore di nice funzione del kernel terminale tempo comando dimensione PID utente
  • 60. --forest e -H Percorso 5 Bash 60
  • 61. Controllo job jobs –mostra informazioni sui job in esecuzioni o sospesi fg [%j] bg [%j] –riprende l’esecuzione del job in primo/secondo piano kill [-9] %j1 [ … %jN ] –termina i job Percorso 5 Bash 61
  • 62. Sospendere l’esecuzione •L’esecuzione di un comando può essere sospesa con «Control+Z» •L’esecuzione può essere ripresa –In primo piano con «fg» –In secondo piano (background) con «bg» Percorso 5 Bash 62
  • 63. Sospendere l’esecuzione •L’esecuzione di un comando può essere sospesa con «Control+Z» •L’esecuzione può essere ripresa –In primo piano con «fg» –In secondo piano (background) con «bg» Percorso 5 Bash 63 numero del job
  • 64. Sospendere l’esecuzione •Specificando «&» al termine del comando questo viene eseguito subito in background Percorso 5 Bash 64
  • 65. Sospendere l’esecuzione •Specificando «&» al termine del comando questo viene eseguito in background Percorso 5 Bash 65 job precedente job corrente
  • 66. Sospendere l’esecuzione •Il comando «wait» attende che tutti i processi in background siano terminati Percorso 5 Bash 66
  • 68. Redirezione Percorso 5 Bash 68 process stdin stdout stderr
  • 69. Redirezione $ comando parametri > file $ comando parametri >> file $ comando parametri < file Percorso 5 Bash 69
  • 70. Redirezione (stdout vs. stderr) $ comando parametri > file $ comando parametri > file 2> file2 $ comando parametri > file 2>&1 $ comando parametri >& file Percorso 5 Bash 70
  • 71. Pipe Percorso 5 Bash 71 proc1 stdin stdout stderr proc2 stdin stdout stderr
  • 72. Pipe $ comando1 parametri | comando2 parametri $ comando1 parametri |& comando2 parametri Percorso 5 Bash 72
  • 73. Pipe Percorso 5 Bash 73
  • 74. Esercizio •Elencare tutti i file presenti in una directory in ordine di dimensione –usando le opzioni di ls (man) –usando il comando «sort» Percorso 5 Bash script 74
  • 75. Redirezione tee [-a] file –duplica lo stdin salvandone una copia in file –utile per salvare una copia di quello che viene visualizzato o trasmesso nella pipe Percorso 5 Bash 75
  • 76. Archivi (tarball) •È comune distribuire materiale sotto forma di archivio (come Zip o Tar in windows) •Tradizionalmente nei sistemi UN*X si usano due programmi in pipe: –uno per trasformare più file in un unico file (tar) –uno per comprimere (gzip, bzip2, o xzip) Percorso 5 Bash 76
  • 77. Archivi (tar) tar op archivio f1 … fN –operazione: c x t f [v] –se il nome dell’archivio è meno «-» usa lo stdout Percorso 5 Bash 77
  • 78. Archivi (compressione) prog [-9vd] [f1 … fN] prog [-9vd] -c –comprime/decomprime file, modifica l’estensione in modo opportuno –con l’opzione -c comprime/decomprime lo stdin e scrive sullo stdout –i programmi sono: bzip2 (molto diffuso); gzip (minime risorse); xz (nuovo) Percorso 5 Bash 78
  • 80. Archivi (tar) •È possibile specificare la compressione direttamente nei parametri di tar –z per usare gzip –j per usare bzip2 –J per usare xz Percorso 5 Bash 80
  • 81. Archivi (solo decompressione) prog [-v] [f1 … fN] prog [-v] -c –decomprime file, modifica l’estensione in modo opportuno –con l’opzione -c decomprime lo stdin sullo stdout –i programmi sono: bunzip2; gunzip; unxz Percorso 5 Bash 81
  • 82. Cercare file find [-xdev] dir [e1 … eN] –cerca nell’albero del filesystem a partire da dir –applica espressioni e1 … eN –con xdev non esce dal filesystem radice Percorso 5 Bash 82
  • 83. Cercare file Esempi find ~ -name foo -print find . -name "*foo*" find ~ -name -type d -iname "*bar*" -ls find . -name "*.o" -print -exec rm '{}' ; find / -size +100M find /usr -executable find /etc /usr/local/etc ! -readable Percorso 5 Bash 83
  • 84. Cercare file grep [-iv] pattern [f1 … fN] –filtra le righe che contengono un pattern Percorso 5 Bash 84
  • 85. Esercizio •Cercare tutti i file di proprietà dell’utente corrente –Tip: l’opzione non è stata spiegata, usare «man find» Percorso 5 Bash script 85
  • 86. Regex •Una espressione regolare (regular expression, regexp, regex, RE) è una stringa che identifica un insieme di stringhe •Operazioni di patten matching •Slang: “la stringa meccia la regex” Percorso 5 Bash 86
  • 87. Regex: simboli base •Un carattere –quel carattere •Punto «.» –un carattere qualsiasi Percorso 5 Bash 87 ma..a oh mamma mia! mamma
  • 88. Regex: simboli base •Cappello «^» e dollaro «$» –rispettivamente, inizio e fine stringa Percorso 5 Bash 88 ^ma..a$ oh mamma mia! mamma
  • 89. Regex: simboli base •Asterisco «*» –un numero qualsiasi di volte, anche zero •Più «+» –una o più volte •Punto interrogativo «?» –zero o una volta Percorso 5 Bash 89 ma?m+z*ak? oh mamma mia! mamma
  • 90. Regex: simboli base •Parentesi quadre «[ … ]» –uno qualsiasi dei caratteri specificati –se x-y, allora uno qualsiasi dei caratteri fra x e y –se il primo carattere dopo «[» è «^», allora un qualsiasi carattere non specificato Percorso 5 Bash 90 ^[A-Z]a?o?[mn]+a$ Mamma Nonna
  • 91. Regex Percorso 5 Bash 91
  • 92. Cercare file grep [-iv] -e regex [f1 … fN] –filtra le righe che contengono l’espressione regolare Percorso 5 Bash 92
  • 93. These slides are licensed under a Creative Commons Attribution Non Commercial Share Alike 4.0 International To view a copy of this license, visit http://creativecommons.org/licenses/by-nc-sa/4.0/ Versione in Italiano: https://creativecommons.org/licenses/by-nc-sa/4.0/deed.it