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

93

description

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

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

Page 1: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari
Page 2: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Percorso 5 Bash 2

Page 3: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 4: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

BASH

• Standard (*NIX, MacOS, Windows, …)

• Versatile e potente

• Programmabile

Percorso 5 Bash 4

Page 5: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Percorso 5 Bash 5

Page 6: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Lavorare con la Console (inizio)

• Control+Alt+F1

• Usare l’applicazione «Terminale»

Percorso 5 Bash 6

Page 7: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Lavorare con la Console (fine)

• Alt+F7

• Comando «Exit»

• Control+D

• Chiudere il terminale

Percorso 5 Bash 7

Page 8: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 9: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Comandi

• Interni (builtin commands)

• Esterni

• Alias

Percorso 5 Bash 9

Page 10: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Aiuto / Informazioni Aggiuntive

• Documentazione in /usr/share/doc

– E.g.: less /usr/share/doc/bash/INTRO.gz

Percorso 5 Bash 10

Page 11: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 12: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 13: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 14: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 15: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Autocompletamento

Percorso 5 Bash 15

Page 16: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 17: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Variabili

• La shell permette di definire «variabili»

• Dollaro «$» per usare le variabili definite

• Doppi apici vs. apice singolo

Percorso 5 Bash 17

Page 18: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 19: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

$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

Page 20: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 21: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 22: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Nomi dei file

• I nomi che contengono spazi devo essere racchiusi da apici o doppi apici

Percorso 5 Bash 22

Page 23: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Esercizio

• A cosa servono i comandi «basename» e «dirname»?

– usare il manuale

– fare alcune prove

Percorso 5 Bash 23

Page 24: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 25: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 26: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 27: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Wildcards («globbing»)

• Wildcards: * ? [ ] -

• A differenza di MS-DOS/Windows l’espansione è fatta dalla shell

Percorso 5 Bash 27

Page 28: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 29: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Navigazione

cd [dir]

– cambia cartella

pwd

– mostra la cartella corrente

Percorso 5 Bash 29

Page 30: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Esempio

/

/tmp/

/tmp/dir1/

/tmp/dir1/file.txt

/tmp/dir2/

/tmp/dir2/file.txt

Percorso 5 Bash 30

/$ cd /tmp/dir1

Page 31: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Esempio

/

/tmp/

/tmp/dir1/

/tmp/dir1/file.txt

/tmp/dir2/

/tmp/dir2/file.txt

Percorso 5 Bash 31

/$ cd ../dir2

Page 32: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Esempio

/

/tmp/

/tmp/dir1/

/tmp/dir1/file.txt

/tmp/dir2/

/tmp/dir2/file.txt

Percorso 5 Bash 32

/$ cd ../..

Page 33: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Esempio

/

/tmp/

/tmp/dir1/

/tmp/dir1/file.txt

/tmp/dir2/

/tmp/dir2/file.txt

Percorso 5 Bash 33

/$ cd /tmp/dir1/./../dir2/..

Page 34: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Creazione

touch f1 [ … fN ]

– tocca (crea o aggiorna l’istante dell’ultima modifica)

mkdir [-p] dir

– crea una direcory

Percorso 5 Bash 34

Page 35: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 36: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Cancellazione

rm [-rf] f1 [ … fN ]

– rimuove file

– alias comune: « alias rm='rm -I' »

rmdir dir

– rimuove una cartella vuota

Percorso 5 Bash 36

Page 37: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 38: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Rinominare/Spostare

mv f1 f2

mv f1 [ … fN ] dir

– muove (rinomina o sposta) file

Percorso 5 Bash 38

Page 39: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 40: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 41: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 42: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Output base

echo [-n] [ testo ]

– stampa il testo a video

clear

– cancella lo schermo

– equivalente a «Control+L»

Percorso 5 Bash 42

Page 43: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 44: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 45: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Modificare permessi

chown utente[:gruppo] f1 [ … fn ]

– cambia owner

chgrp gruppo f1 [ … fn ]

– cambia gruppo

Percorso 5 Bash 45

Page 46: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 47: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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)

Page 48: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Informazioni

uname [-a]

– informazioni sul sistema

lsb_release [-a]

– informazioni sulla release

• File e cartelle in /proc

Percorso 5 Bash 48

Page 49: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Dimensione

wc[f1 … fN]

– dimensione dei file in righe, parole, caratteri

du[dir]

– dimensione dei file di una cartella

Percorso 5 Bash 49

Page 50: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Mountpoint

mount

– visualizza i filesystem montati

– per montare nuovi occorrono i privilegi di root

Percorso 5 Bash 50

Page 51: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 52: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 53: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Eseguire comandi

• Più comandi possono essere specificati sulla stessa linea separati con «;»

Percorso 5 Bash 53

Page 54: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 55: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Processi e Job

• Ogni processo ha un numero

– PID

• Ogni processo è collegato ad un utente

– UID

Percorso 5 Bash 55

Page 56: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Processi e Job

• Altre informazioni

– commandline

– tempo

– memoria

– priorità

– nice level

Percorso 5 Bash 56

Page 57: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Gentilezza

nice num cmd

– esegue un comando in modo più gentile

renice num proc

– rende un processo più gentile

Percorso 5 Bash 57

Page 58: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 59: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 60: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

--forest e -H

Percorso 5 Bash 60

Page 61: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 62: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 63: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 64: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Sospendere l’esecuzione

• Specificando «&» al termine del comando questo viene eseguito subito in background

Percorso 5 Bash 64

Page 65: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Sospendere l’esecuzione

• Specificando «&» al termine del comando questo viene eseguito in background

Percorso 5 Bash 65

job precedente

job corrente

Page 66: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Sospendere l’esecuzione

• Il comando «wait» attende che tutti i processi in background siano terminati

Percorso 5 Bash 66

Page 67: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Albero (ascii-art)

Percorso 5 Bash 67

Page 68: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Redirezione

Percorso 5 Bash 68

process stdin stdout

stderr

Page 69: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Redirezione

$ comando parametri > file

$ comando parametri >> file

$ comando parametri < file

Percorso 5 Bash 69

Page 70: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Redirezione (stdout vs. stderr)

$ comando parametri > file

$ comando parametri > file 2> file2

$ comando parametri > file 2>&1

$ comando parametri >& file

Percorso 5 Bash 70

Page 71: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Pipe

Percorso 5 Bash 71

proc1 stdin stdout

stderr

proc2 stdin stdout

stderr

Page 72: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Pipe

$ comando1 parametri | comando2 parametri

$ comando1 parametri |& comando2 parametri

Percorso 5 Bash 72

Page 73: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Pipe

Percorso 5 Bash 73

Page 74: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 75: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 76: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 77: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 78: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 79: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Archivi

Percorso 5 Bash 79

Page 80: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 81: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 82: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 83: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 84: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Cercare file

grep [-iv] pattern [f1 … fN]

– filtra le righe che contengono un pattern

Percorso 5 Bash 84

Page 85: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Esercizio

• Cercare tutti i file di proprietà dell’utente corrente

– Tip: l’opzione non è stata spiegata, usare «man find»

Percorso 5 Bash script 85

Page 86: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 87: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Regex: simboli base

• Un carattere

– quel carattere

• Punto «.»

– un carattere qualsiasi

Percorso 5 Bash 87

ma..a

oh mamma mia!

mamma

Page 88: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Regex: simboli base

• Cappello «^» e dollaro «$»

– rispettivamente, inizio e fine stringa

Percorso 5 Bash 88

^ma..a$

oh mamma mia!

mamma

Page 89: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 90: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

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

Page 91: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Regex

Percorso 5 Bash 91

Page 92: La shell Bash - Comandi base - Comandi avanzati - Espressioni regolari

Cercare file

grep [-iv] -e regex [f1 … fN]

– filtra le righe che contengono l’espressione regolare

Percorso 5 Bash 92