Sei sulla pagina 1di 52

Shell

Shell
di UNX
di UNX
2 2
Sommario Sommario
ntroduzione ntroduzione
comandi di base comandi di base
l file system l file system
processi processi
La programmazione della La programmazione della shell shell
3 3
Caratteristiche UNX Caratteristiche UNX
Caratteristiche principali Caratteristiche principali
Multitasking Multitasking & & multiutente multiutente
Ottima integrazione in rete Ottima integrazione in rete
nterfaccia utente modificabile nterfaccia utente modificabile
Modularit Modularit
File system gerarchico File system gerarchico
Vari strumenti di ausilio alla Vari strumenti di ausilio alla
programmazione programmazione
4 4
La struttura La struttura
5 5
La struttura La struttura
6 6
Evoluzione Evoluzione
7 7
dialetti dialetti
UNIX UNIX il nome di una famiglia di sistemi il nome di una famiglia di sistemi
operativi, con diverse implementazioni per le operativi, con diverse implementazioni per le
varie architetture HW varie architetture HW
8 8
Standardizzazione Standardizzazione
Dalla fine degli anni 80 ci sono stati numerosi Dalla fine degli anni 80 ci sono stati numerosi
sforzi per "standardizzare UNX sforzi per "standardizzare UNX
L'obiettivo la portabilit delle applicazioni a L'obiettivo la portabilit delle applicazioni a
livello sorgente livello sorgente
Programmi C Programmi C
Script di Script di shell shell
Programmi in altri linguaggi Programmi in altri linguaggi
La competizione dei vari costruttori per il La competizione dei vari costruttori per il
controllo dello controllo dello Unix Unix "Standard ha creato una "Standard ha creato una
situazione piuttosto complessa situazione piuttosto complessa
9 9
Standardizzazione Standardizzazione
Standard principali Standard principali
POSX (EEE dal 1988, poi SO) " POSX (EEE dal 1988, poi SO) "Portable Portable
Operating Operating System nterface System nterface for for Unix Unix
XGP (X/Open, dal 1989) "X/Open XGP (X/Open, dal 1989) "X/Open
Portability Portability Guide Guide
SVD ( SVD (AT&T AT&T, 1989) "System V nterface , 1989) "System V nterface
Definition Definition
OSF (Open Software OSF (Open Software Foundation Foundation) )
10 10
La filosofia UNX La filosofia UNX
UNX pi che una famiglia di sistemi UNX pi che una famiglia di sistemi
operativi operativi
Un insieme di programmi Un insieme di programmi
Una filosofia basata su di essi Una filosofia basata su di essi
Scopo di questa parte del corso fornire Scopo di questa parte del corso fornire
una introduzione a questa filosofia una introduzione a questa filosofia
Per una dettagliata descrizione dei comandi Per una dettagliata descrizione dei comandi
si rimanda ai manuali si rimanda ai manuali
Comandi di base Comandi di base
12 12
Una sessione di lavoro Una sessione di lavoro
nizio di una sessione nizio di una sessione
- - Login Login: :
- - Passowd Passowd: :
Fine di una sessione Fine di una sessione
CTRL CTRL- -d d, exit, , exit, logout logout (dipende dall'interprete dei (dipende dall'interprete dei
comandi) comandi)
NOTA: i caratteri maiuscoli sono diversi dai NOTA: i caratteri maiuscoli sono diversi dai
minuscoli! minuscoli!
13 13
comandi in UNX comandi in UNX
Sintassi, in generale, di un comando UNX Sintassi, in generale, di un comando UNX
Comando [ Comando [- -opzioni] argomenti opzioni] argomenti
comandi troppo lunghi possono essere comandi troppo lunghi possono essere
continuati sulla riga successiva battendo continuati sulla riga successiva battendo " "\ \" "
come ultimo carattere della riga come ultimo carattere della riga
Si possono dare pi comandi sulla stessa Si possono dare pi comandi sulla stessa
riga separandoli con riga separandoli con ";" ";" (saranno eseguiti in (saranno eseguiti in
sequenza) sequenza)
comando1 ; comando2 ; ... comando1 ; comando2 ; ...
14 14
nformazioni sul sistema nformazioni sul sistema
- - whoami whoami
- - who am i who am i
- - who who
- - w w
- - id id
- - groups groups
- - finger finger
- - uname uname
- - passwd passwd
- - su su
- - date date
Ogni utente identificato dal suo Ogni utente identificato dal suo login login (UD) ed (UD) ed
appartiene a uno o pi gruppi (GD) appartiene a uno o pi gruppi (GD)
Per avere informazioni sugli utenti o sul sistema: Per avere informazioni sugli utenti o sul sistema:
15 15
Help in linea Help in linea
Tutti i comandi di UNX sono documentati in linea Tutti i comandi di UNX sono documentati in linea
- - man man comando comando
Organizzanto in sezioni corrispondenti ad argomenti Organizzanto in sezioni corrispondenti ad argomenti
1. 1. Commands Commands
2. 2. System Calls System Calls
3. 3. Library Funcions Library Funcions
4. 4. Administrative Files Administrative Files
5. 5. Miscellaneous Information Miscellaneous Information
6. 6. Games Games
7. 7. I/O and Special Files I/O and Special Files
8. 8. Maintenance Maintenance Commands Commands
16 16
Help in linea Help in linea
Oltre al man Oltre al man
apropos apropos chiave chiave
elenca le pagine del manuale contenente elenca le pagine del manuale contenente chiave chiave
whatis whatis comando comando
indica le sezioni del manuale in cui si trova indica le sezioni del manuale in cui si trova comando comando
l File System l File System
18 18
path path
. la directory corrente . la directory corrente
.. la directory padre di quella corrente .. la directory padre di quella corrente
file che iniziano con . sono nascosti file che iniziano con . sono nascosti
Path Path assoluto = /dir1/dir2/. assoluto = /dir1/dir2/.
Parte dalla radice del file system Parte dalla radice del file system
Path Path relativo = dir1/dir2/. relativo = dir1/dir2/.
Parte dalla cartella corrente Parte dalla cartella corrente
19 19
file file
Un solo tipo di file fisico: byte Un solo tipo di file fisico: byte stream stream
4 tipi di file logici 4 tipi di file logici
Directory Directory
Contiene nomi e indirizzi di altri file Contiene nomi e indirizzi di altri file
Special file Special file
Entry point per un dispositivo di /O Entry point per un dispositivo di /O
Link Link
Collegamento Collegamento ad un altro ad un altro file file
File ordinario File ordinario
Tutti gli altri file Tutti gli altri file
20 20
Special file Special file
Ogni Ogni device device di /O visto come un file di /O visto come un file
programmi non sanno se operano su programmi non sanno se operano su
file o file o device device di /O di /O
Lettura/scrittura su special file causano Lettura/scrittura su special file causano
operazioni di /O sul relativo operazioni di /O sul relativo device device
ndipendenza dai dispositivi! ndipendenza dai dispositivi!
21 21
Link Link
Hard Hard link link
Un nome (in una directory) che punta a un Un nome (in una directory) che punta a un i i- -node node
puntato anche da altri puntato anche da altri
Soft Soft link link
Un file che contiene il nome di un altro file Un file che contiene il nome di un altro file
Particolarit Particolarit
Non si pu fare hard Non si pu fare hard link link di directory di directory
Non si pu fare hard Non si pu fare hard link link a file su altri file system a file su altri file system
Un file viene rimosso quando tutti i suoi hard Un file viene rimosso quando tutti i suoi hard link link
sono stati rimossi sono stati rimossi
22 22
l comando l comando ls ls
Per visualizzare il contenuto di una directory Per visualizzare il contenuto di una directory
ls ls [ [- -opzioni] file ... opzioni] file ...
Opzioni Opzioni
- -a a visualizza anche i file che iniziano con il punto visualizza anche i file che iniziano con il punto
- -l l output in formato esteso output in formato esteso
- -g g include/sopprime l'indicazione del proprietario include/sopprime l'indicazione del proprietario
- -r r ordine inverso (alfabetico o temporale) ordine inverso (alfabetico o temporale)
- -F F appende carattere per indicare i file particolari (/ * @) appende carattere per indicare i file particolari (/ * @)
- -R R elenca anche i file nelle sottodirectory elenca anche i file nelle sottodirectory
23 23
Occupazione spazio su disco Occupazione spazio su disco
Per controllare l'occupazione dei Per controllare l'occupazione dei dischi dischi
df df [ [- -k k - -h h] ]
Opzioni Opzioni
- -k k mostra l'occupazione in mostra l'occupazione in KByte KByte
- -h h mostra l'occupazione in formato "umano mostra l'occupazione in formato "umano
24 24
Occupazione spazio su disco Occupazione spazio su disco
Per vedere lo spazio (in blocchi) occupato Per vedere lo spazio (in blocchi) occupato
da una directory e tutte le sottodirectory da una directory e tutte le sottodirectory
du du [ [- -opzioni] directory ... opzioni] directory ...
Opzioni Opzioni
- -a a mostra l'occupazione di ciascun file mostra l'occupazione di ciascun file
- -s s mostra solo il totale complessivo mostra solo il totale complessivo
25 25
Visualizzazione di file di testo Visualizzazione di file di testo
cat cat file1 file2 ... file1 file2 ...
concatena i file sullo concatena i file sullo std std output output
head [ head [- -n] file1 file2 n] file1 file2
visualizza le prima n righe visualizza le prima n righe
tail tail [ [- -+nrf] file1 file2 ... +nrf] file1 file2 ...
Visualizza le ultime (con + salta le prime) 10 righe Visualizza le ultime (con + salta le prime) 10 righe
- -r r visualizza in ordine inverso visualizza in ordine inverso
- -f f rilegge continuamente il file rilegge continuamente il file
- -n n visualizza (salta) le ultime (prime) n righe visualizza (salta) le ultime (prime) n righe
26 26
Visualizzazione per pagine Visualizzazione per pagine
Esistono tre comandi quasi equivalenti Esistono tre comandi quasi equivalenti
pg pg file1 file2 ... file1 file2 ...
more file1 file2 ... more file1 file2 ...
less less file1 file2 ... file1 file2 ...
Durante la visualizzazione possibile dare dei Durante la visualizzazione possibile dare dei
comandi interattivi comandi interattivi
spazio spazio prossima pagina prossima pagina
CR CR prossima riga prossima riga
b b pagina precedente pagina precedente
/ /pattern pattern prossima pagina con prossima pagina con pattern pattern
? ?pattern pattern pagina precedente con pagina precedente con pattern pattern
q q termina programma termina programma
v v edita file corrente edita file corrente
27 27
Manipolazione di file Manipolazione di file
cp cp [ [- -fir fir] srci1 src2 ... ] srci1 src2 ... dest dest
copia uno o pi file copia uno o pi file
rm rm [ [- -fir fir] file1 file2 ... ] file1 file2 ...
cancella i file elencati cancella i file elencati
mv mv [ [- -fi fi] file1 file2 ... ] file1 file2 ... dest dest
sposta uno o pi file/cambia il nome di un file sposta uno o pi file/cambia il nome di un file
- -f f non chiede mai conferma (attenzione!!!) non chiede mai conferma (attenzione!!!)
- -i i chiede conferma per ciascun file chiede conferma per ciascun file
- -r r opera opera ricorsivamente ricorsivamente nelle sottodirectory nelle sottodirectory
28 28
Manipolazione di directory Manipolazione di directory
cd cd directory directory
cambia la directory in quella indicata cambia la directory in quella indicata
pwd pwd
mostra path directory corrente mostra path directory corrente
mkdir mkdir directory directory
crea la directory specificata crea la directory specificata
rmdir rmdir dirl dir2 . dirl dir2 .
cancella una o pi directory (devono essere cancella una o pi directory (devono essere
vuote) vuote)
29 29
Cambio di proprietario Cambio di proprietario
chgrp chgrp [ [- -R] gruppo file R] gruppo file
cambia il gruppo del file cambia il gruppo del file
chown chown [ [- -R] utente[:gruppo] file R] utente[:gruppo] file
cambia proprietario [e gruppo] del file cambia proprietario [e gruppo] del file
n entrambi i casi l'opzione n entrambi i casi l'opzione R R indica di indica di
propagare il comando alle sottodirectory propagare il comando alle sottodirectory
30 30
chmod chmod [ [- -R] protezione file R] protezione file
Protezioni assolute: Protezioni assolute: un numero di quattro cifre (il un numero di quattro cifre (il
primo si pu omettere) primo si pu omettere)
Protezioni simboliche: Protezioni simboliche: una stringa di tre caratteri una stringa di tre caratteri
ugoa ugoa + + - - = = rwxst rwxst
Cambio protezione Cambio protezione
r w x r w x r w x r w x r w x r w x s S t s S t
4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1 4 2 1
altri altri gruppo gruppo padrone padrone
31 31
Cambio protezione Cambio protezione
Esempi Esempi
- - chmod chmod 640 640 prova.txt prova.txt
Lettura/scrittura per proprietario Lettura/scrittura per proprietario
Lettura per gruppo Lettura per gruppo
Nessun permesso per altri Nessun permesso per altri
- - chmod chmod 755 dir 755 dir
Lettura/scrittura/esecuzione per proprietario Lettura/scrittura/esecuzione per proprietario
Lettura/esecuzione per gruppo Lettura/esecuzione per gruppo
Lettura/esecuzione per altri Lettura/esecuzione per altri
32 32
Sticky Sticky bit bit
Sticky Sticky bit (t) bit (t)
Non usato su file Non usato su file
Per directory, solo il proprietario del file o Per directory, solo il proprietario del file o
root root possono cancellare o rinominare i file possono cancellare o rinominare i file
contenuti contenuti
(es. directory / (es. directory /tmp tmp) )
$ $ ls ls - -ld ld
/ /tmp tmp drwxrwxrw drwxrwxrwt t 6 6 root root root root 1024 1024 Aug Aug 10 01:03 / 10 01:03 /tmp tmp
33 33
Setuid Setuid e e setgid setgid
Setuid Setuid (s) (s)
Per diventare temporaneamente il padrone Per diventare temporaneamente il padrone
del file del file
Setgid Setgid (S) (S)
Per diventare temporaneamente dello stesso Per diventare temporaneamente dello stesso
gruppo del padrone del file gruppo del padrone del file
$ ls $ ls - -l /usr/bin/passwd l /usr/bin/passwd
- -r r- -s s-- --x x-- --x x 1 1 root root root root 17700 17700 Jun Jun 25 2004 / 25 2004 /usr usr/ /bin bin/ /passwd passwd
34 34
Protezioni standard Protezioni standard
umask umask maschera maschera
Per definire la maschera delle protezioni Per definire la maschera delle protezioni
l comando l comando umask umask senza argomento mostra i senza argomento mostra i
permessi che sono NEGAT quando si crea permessi che sono NEGAT quando si crea
un file (la maschera delle protezioni) un file (la maschera delle protezioni)
Esempio: Esempio:
umask umask 027 027
Nega tutti i permessi agli "altri e i permessi di Nega tutti i permessi agli "altri e i permessi di
scrittura al "gruppo scrittura al "gruppo
35 35
Ricerca di un file Ricerca di un file
find find directory espressione directory espressione
Visita tutto l'albero sotto la directory specificata e Visita tutto l'albero sotto la directory specificata e
ritorna i file che rendono vera l'espressione ritorna i file che rendono vera l'espressione
- -name name pattern pattern (usare gli apici se si usano espressioni regolari) (usare gli apici se si usano espressioni regolari)
- -type type tipo (b c d l f) tipo (b c d l f)
- -user user utente utente
- -group group gruppo gruppo
- -newer newer file file
- -atime atime, , mtime mtime, , ctime ctime [+/ [+/- -] giorni ] giorni
- -print print
- -size size [+/ [+/- -] blocchi ] blocchi
36 36
Confronto di file Confronto di file
diff [ diff [- -opzioni] file1 file2 opzioni] file1 file2
diff diff [ [- -opzioni] dir1 dir2 opzioni] dir1 dir2
mostra le righe diverse, indicando quelle da mostra le righe diverse, indicando quelle da
aggiungere (a), cancellare (d) e cambiare (c) aggiungere (a), cancellare (d) e cambiare (c)
- -b b ignora gli spazi a fine riga, ignora gli spazi a fine riga, collassa collassa gli altri gli altri
- -i i ignora la differenza tra maiuscolo e ignora la differenza tra maiuscolo e
minuscolo minuscolo
- -w w ignora completamente la spaziatura ignora completamente la spaziatura
37 37
Confronto di file Confronto di file Esempio Esempio
Prova1 Prova1
ciao ciao
come va? come va?
bene bene
grazie grazie
Prova 3 Prova 3
ciao ciao
Prova 2 Prova 2
ciao ciao
come? come?
bene bene
molto bene molto bene
grazie grazie
$ $ diff diff Prova1 Prova2 Prova1 Prova2
2c2 2c2
< come va? < come va?
--- ---
> come? > come?
4c4,5 4c4,5
< grazie < grazie
--- ---
> molto bene > molto bene
> grazie > grazie
$ $ diff diff Prova1 Prova3 Prova1 Prova3
2,4d1 2,4d1
< come va? < come va?
< bene < bene
< grazie < grazie
$ $ diff diff Prova3 Prova1 Prova3 Prova1
1a2,4 1a2,4
> come va? > come va?
> bene > bene
> grazie > grazie
38 38
Modifica di attributi di file Modifica di attributi di file
touch touch [ [- -opzioni] [data] file ... opzioni] [data] file ...
aggiorna data e ora dell'ultimo aggiorna data e ora dell'ultimo
accesso/modifica di un file accesso/modifica di un file
se data non specificata, usa data e ora corrente se data non specificata, usa data e ora corrente
se il file non esiste lo crea vuoto se il file non esiste lo crea vuoto
- -a a modifica accesso modifica accesso
- -m m ultima modifica ultima modifica
Processi Processi
40 40
processi processi
Un processo un programma in esecuzione Un processo un programma in esecuzione
Un processo una sequenza di byte che la Un processo una sequenza di byte che la
CPU interpreta come istruzioni ( CPU interpreta come istruzioni (text text e dati) e dati)
Caratteristiche Caratteristiche
Organizzazione gerarchica Organizzazione gerarchica
PD (assegnato dal sistema) PD (assegnato dal sistema)
Priorit (assegnata dal sistema) Priorit (assegnata dal sistema)
Evolve attraverso un certo numero di stati Evolve attraverso un certo numero di stati
41 41
Lo stato dei processi Lo stato dei processi
42 42
Lo stato dei processi Lo stato dei processi
l comando ps permette di analizzare lo stato di
un processo
Numerose opzioni con vari livelli di informazioni
Output base
PD TTY TME CMD
3490 pts/3 00:00:00 bash
3497 pts/3 00:00:00 ps
PD Process dentifier
TTY terminale da cui il processo eseguito
TME tempo totale di esecuzione
CMD comando eseguito corrispondente
43 43
Lo stato dei processi Lo stato dei processi
n attesa non interrompibile D D
Zombie Z Z
Addormentato S S
Stoppato T T
n esecuzione/eseguibile R R
Opzioni principali Opzioni principali
- -e: e: visualizza tutti i processi (tutti gli utenti) visualizza tutti i processi (tutti gli utenti)
- -x: x: visualizza anche i processi in background visualizza anche i processi in background
- -u: u: visualizza visualizza info info sulle risorse sulle risorse
Stati di un processo: Stati di un processo:
44 44
Zombie e Zombie e daemon daemon
Zombie: Zombie: processo che ha terminato o stato processo che ha terminato o stato
ucciso, ma non riesce a segnalare l'evento al ucciso, ma non riesce a segnalare l'evento al
padre padre
Daemon Daemon (demone): processi che girano (demone): processi che girano
persistentemente in background e forniscono persistentemente in background e forniscono
servizi al sistema ( servizi al sistema (es es: la posta elettronica o la : la posta elettronica o la
gestione delle risorse) gestione delle risorse)
Sono disponibili in qualunque momento per Sono disponibili in qualunque momento per
servire pi task o utenti servire pi task o utenti
(^Z)
45 45
Gestione dei processi Gestione dei processi
processi normalmente eseguono in processi normalmente eseguono in
foreground foreground e hanno tre canali standard e hanno tre canali standard
connessi al terminale connessi al terminale
processi attivati con processi attivati con & & eseguono in eseguono in
background background e sono provi di e sono provi di stdin stdin
Un processo in Un processo in foreground foreground pu essere pu essere
sospeso con sospeso con ^Z ^Z
46 46
Gestione dei processi Gestione dei processi
processi sospesi possono essere processi sospesi possono essere
continuati sia in continuati sia in foreground foreground che in che in
background background
processi in background possono processi in background possono
essere riportati in essere riportati in foreground foreground
l comando l comando at at permette di lanciare e permette di lanciare e
controllare processi controllare processi batch batch
47 47
- - jobs jobs [ [- -l] l]
elenca i job in background o sospesi elenca i job in background o sospesi
- - bg bg [ [job job- -id id] ]
esegue i job specificati in background esegue i job specificati in background
- - fg fg [ [job job- -id id] ]
esegue i job indicati in foreground esegue i job indicati in foreground
- - kill [ kill [- -signal] signal] process process- -id id
- - kill kill [ [- -signal signal] ] %job %job- -id id
manda un segnale al processo/job indicato (i pi comuni sono manda un segnale al processo/job indicato (i pi comuni sono
1 HUP e 9 KLL) 1 HUP e 9 KLL)
- - kill kill - -l l
elenca tutti i segnali disponibili elenca tutti i segnali disponibili
Gestione dei processi Gestione dei processi Comandi Comandi
La programmazione La programmazione
della della shell shell
49 49
Shell Shell
E' lo strato pi esterno del sistema operativo E' lo strato pi esterno del sistema operativo
Offre due vie di comunicazione con il SO Offre due vie di comunicazione con il SO
interattivo interattivo
shell shell script script
Script di Script di shell shell
un file (di testo) costituito da una sequenza di un file (di testo) costituito da una sequenza di
comandi comandi
La La shell shell non parte del non parte del kernel kernel del SO, ma del SO, ma
un normale processo utente un normale processo utente
Ci permette di poter modificare agevolmente Ci permette di poter modificare agevolmente
l'interfaccia verso il sistema operativo l'interfaccia verso il sistema operativo
50 50
Shell Shell Caratteristiche Caratteristiche
Espansione/completamento dei nomi dei file Espansione/completamento dei nomi dei file
Ri Ri- -direzione direzione dell'/O ( dell'/O (stdin stdin, , stdout stdout, , stderr stderr) )
Pipeline dei comandi Pipeline dei comandi
Editing e history dei comandi Editing e history dei comandi
Aliasing Aliasing
Gestione dei processi ( Gestione dei processi (foreground foreground, ,
background sospensione e continuazione) background sospensione e continuazione)
Linguaggio di comandi Linguaggio di comandi
Sostituzione delle variabili di Sostituzione delle variabili di shell shell
51 51
Le Le shell shell disponibili disponibili
Bourne Bourne shell shell ( (sh sh) )
La shell originaria, preferita nella programmazione La shell originaria, preferita nella programmazione
sistemistica sistemistica
C C- -shell shell ( (csh csh) )
La shell di Berkeley, ottima per l'uso interativo e La shell di Berkeley, ottima per l'uso interativo e
per gli script non di sistema per gli script non di sistema
Korn Korn shell shell ( (ksh ksh) )
La Bourne sh riscrita dall'AT&T per assomigliare La Bourne sh riscrita dall'AT&T per assomigliare
alla C alla C- -shell shell
Tahoe Tahoe ( (tcsh tcsh) )
Dal progetto Dal progetto Tahoe Tahoe, una , una C C- -shell shell migliorata migliorata
52 52
Le Le shell shell disponibili disponibili
All'interno del corso useremo la All'interno del corso useremo la bash bash
Bourne Bourne again again shell shell ( (bash bash) )
Tipica Tipica shell shell di di Linux Linux
http://www.linuxdoc.org/HOWTO/ http://www.linuxdoc.org/HOWTO/Bash Bash- -Prompt Prompt- -HOWTO HOWTO/ /index.html index.html
http://www.linuxdoc.org/HOWTO/ http://www.linuxdoc.org/HOWTO/Bash Bash- -Prog Prog- -ntro ntro- -HOWTO.html HOWTO.html
53 53
Le Le shell shell a confronto a confronto
4.54 4.54 Tahoe Tahoe tcsh tcsh
3.19 3.19
2.87 2.87
1.73 1.73
1.00 1.00
Complessit relativa Complessit relativa
(in linee di codice) (in linee di codice)
David David Korn Korn ( (AT&T AT&T) ) ksh ksh
GNU, LNUX GNU, LNUX bash bash
UCB UCB csh csh
S.R. S.R. Bourne Bourne sh sh
Chi Chi Shell Shell
54 54
Esecuzione della Esecuzione della shell shell
- - / /etc etc/ /passwd passwd contiene contiene info info relative al relative al login login
tra cui quale programma viene automaticamente tra cui quale programma viene automaticamente
eseguito al eseguito al login login (in genere sempre una (in genere sempre una shell shell) )
Durante l'esecuzione, la Durante l'esecuzione, la shell shell cerca nella cerca nella
directory corrente, nell'ordine, i seguenti file directory corrente, nell'ordine, i seguenti file
di configurazione di configurazione
. .bash_profile bash_profile
. .bash_login bash_login
. .profile profile
contengono i comandi che vengono eseguiti al contengono i comandi che vengono eseguiti al login login
.bashrc (shell non interattive)
55 55
Esecuzione della Esecuzione della shell shell
Se la Se la shell shell non di tipo interattivo viene non di tipo interattivo viene
eseguito il file eseguito il file .bashrc .bashrc
Se non li trova, vengono usati quelli di Se non li trova, vengono usati quelli di
sistema nella directory sistema nella directory / /etc etc
E' previsto anche un file E' previsto anche un file
.bash_logout .bash_logout che viene eseguito alla che viene eseguito alla
sconnessione sconnessione
56 56
Esempio: esecuzione del comando Esempio: esecuzione del comando who who
System call coinvolte System call coinvolte
fork() fork()
crea un nuovo processo (figlio) che esegue il mesimo codice del crea un nuovo processo (figlio) che esegue il mesimo codice del
padre padre
exec exec() ()
carica un nuovo codice nell'ambito del processo corrente carica un nuovo codice nell'ambito del processo corrente
exit() exit()
termina il processo corrente termina il processo corrente
/ /bin bin/ /who who
/ /bin bin/ /bash bash / /bin bin/ /bash bash
Funzionamento della Funzionamento della shell shell
1) fork
2) exec
3) exit
57 57
Bash Bash Variabili Variabili
La La shell shell mantiene un insieme di variabili per mantiene un insieme di variabili per
la personalizzazione dell'ambiente la personalizzazione dell'ambiente
Assegnazione: Assegnazione: variabile=valore variabile=valore
Variabili di Variabili di shell shell pi importanti pi importanti
PWD PWD la directory corrente la directory corrente
PATH PATH elenco di directory in cui cercare comandi elenco di directory in cui cercare comandi
HOME HOME directory di directory di login login
PS1, PS4 PS1, PS4 stringhe di stringhe di prompt prompt
(vedere PROMPTNG su (vedere PROMPTNG su man man bash bash) )
Le assegnazioni vengono in genere aggiunte Le assegnazioni vengono in genere aggiunte
all'interno del all'interno del .bash_profile .bash_profile
58 58
Bash Bash Variabili Variabili
Per accedere al valore di una variabile, si usa Per accedere al valore di una variabile, si usa
l'operatore l'operatore $ $
Esempio: se Esempio: se x x vale 123, si pu usarne il valore vale 123, si pu usarne il valore
tramite tramite $x $x
Per visualizzare il valore di una variabile, si Per visualizzare il valore di una variabile, si
usa il comando usa il comando echo echo
NOTA NOTA
valori delle variabili sono sempre STRNGHE valori delle variabili sono sempre STRNGHE
Per valutazioni aritmetiche si pu usare Per valutazioni aritmetiche si pu usare
l'operatore l'operatore $(()) $(()), oppure il comando , oppure il comando let let
59 59
Bash Bash Variabili Variabili
Esempio Esempio
# # x=0 x=0
# # echo $x+1 echo $x+1
0+1 0+1
# # echo $((x+1)) echo $((x+1))
1 1
# # let x+=1 let x+=1
# # echo $x echo $x
1 1
60 60
Bash Bash Storia dei comandi Storia dei comandi
La La bash bash mantiene una storia dei mantiene una storia dei
"comandi precedenti dentro un buffer "comandi precedenti dentro un buffer
circolare memorizzato nel file indicato circolare memorizzato nel file indicato
dalle variabili dalle variabili HISTFILE HISTFILE
( (default default .bash_history .bash_history) )
Utile per chiamare comandi o Utile per chiamare comandi o
correggerli correggerli
61 61
Bash Bash Storia dei comandi Storia dei comandi
Per accedere ai comandi Per accedere ai comandi
!n !n esegue il comando n del buffer esegue il comando n del buffer
(potrebbe non esserci) (potrebbe non esserci)
!! !! esegue l'ultimo comando esegue l'ultimo comando
! !- -n n esegue l'n esegue l'n- -ultimo comando ultimo comando
!$ !$ l'ultimo parametro del comando precedente l'ultimo parametro del comando precedente
!^ !^ il primo parametro del comando precedente il primo parametro del comando precedente
!* !* tutti i parametri del comando precedente tutti i parametri del comando precedente
!stringa !stringa l'ultimo comando che inizia con stringa l'ultimo comando che inizia con stringa
^stringa1^stringa2 ^stringa1^stringa2 sostituisce stringa1 nell'ultimo comando sostituisce stringa1 nell'ultimo comando
con stringa 2 con stringa 2
62 62
Bash Bash Storia dei comandi Storia dei comandi
Esempio Esempio
# #cc cc - -g g prog.c prog.c
# #vi vi iop.c iop.c
# #cc cc prog.c prog.c iop.c iop.c
# #a a.out .out
Dopo l'ultimo comando si ha Dopo l'ultimo comando si ha
# #!$ !$ esegue a esegue a.out .out
# #! !- -1 1 idem idem
# #!c !c esegue esegue cc cc prog.c prog.c iop.c iop.c
# #!v !v esegue vi esegue vi iop.c iop.c
# #rm rm !* !* esegue esegue rm rm a a.out .out
# #rm rm !$ !$ esegue esegue rm rm a a.out .out
63 63
Bash Bash Globbing Globbing
Espansione dei nomi dei file (e Espansione dei nomi dei file (e
comandi) con il tasto comandi) con il tasto TAB TAB (o ESC) (o ESC)
Per i nomi di file eseguibili la Per i nomi di file eseguibili la shell shell cerca cerca
nelle directory del PATH nelle directory del PATH
Per i file generici, la Per i file generici, la shell shell espande i nomi di espande i nomi di
file nella directory corrente file nella directory corrente
64 64
Bash Bash Wildcard Wildcard
Caratteri speciali Caratteri speciali
- - / / separa i nomi delle directory in un separa i nomi delle directory in un path path
- - ? ? un qualunque carattere (ma solo uno) un qualunque carattere (ma solo uno)
- - * * una qualunque sequenza di caratteri una qualunque sequenza di caratteri
- - ~ ~ la directory di login la directory di login
- - ~user ~user la directory di la directory di login login dello dello user user specificato specificato
- - [] [] un carattere tra quelli in parentesi un carattere tra quelli in parentesi
- - {,} {,} una parola tra quelle in parentesi una parola tra quelle in parentesi
(separate da , ) (separate da , )
Esempio Esempio
cp cp ~/.[ ~/.[azX azX]* ~/ ]* ~/rap rap{1,2,20} {1,2,20}.doc .doc ~/ ~/man.wk man.wk? ? ~bos ~bos
65 65
Bash Bash Aliasing Aliasing
E' possibile definire dei comandi con nuovi E' possibile definire dei comandi con nuovi
nomi (alias), tipicamente pi semplici nomi (alias), tipicamente pi semplici
alias alias
elenca gli alias definiti elenca gli alias definiti
alias nome=`valore' alias nome=`valore'
definisce un alias definisce un alias (no (no spazi spazi prima/dopo prima/dopo = ) = )
unalias unalias nome nome
cancella un alias cancella un alias
Esempio Esempio
- - alias ll=` alias ll=`ls ls- -l l' '
66 66
Bash Bash Ambiente Ambiente
Le variabili sono di norma locali alla Le variabili sono di norma locali alla shell shell
Occorre un meccanismo che consenta di passare i valori Occorre un meccanismo che consenta di passare i valori
delle variabili ai processi creati dalla delle variabili ai processi creati dalla shell shell (in particolare alle (in particolare alle
sub sub- -shell shell) )
L'ambiente della L'ambiente della shell shell una lista di coppie una lista di coppie
nome=valore nome=valore trasmessa ad ogni processo creato trasmessa ad ogni processo creato
export variabile [ = valore ] export variabile [ = valore ]
assegna assegna un valore un valore a una a una variabile di ambiente variabile di ambiente
printenv printenv [variabile] [variabile]
stampa stampa il valore di una o tutte le variabili d'ambiente il valore di una o tutte le variabili d'ambiente
env env
stampa il valore di tutte le variabili d'ambiente stampa il valore di tutte le variabili d'ambiente
67 67
Bash Bash Variabili di Ambiente Variabili di Ambiente
Le principali variabili d'ambiente Le principali variabili d'ambiente
PWD PWD SHELL SHELL
PATH PATH HOME HOME
HOST HOST HOSTTYPE HOSTTYPE
USER USER GROUP GROUP
MAL MAL MALPATH MALPATH
OSTYPE OSTYPE MACHTYPE MACHTYPE
Alcune variabili di ambiente sono legate Alcune variabili di ambiente sono legate
al valore delle corrispondenti variabili di al valore delle corrispondenti variabili di
shell shell (per es. PATH) (per es. PATH)
68 68
Ri Ri- -direzione direzione dell'/O dell'/O
Processo Processo
stdin stdin stdout stdout
stderr stderr
Ogni processo ha tre canali associati Ogni processo ha tre canali associati
Ogni canale pu essere Ogni canale pu essere ri ri- -diretto diretto
su file su file
su altro canale su altro canale
l collegamento l collegamento stdout stdout ! ! stdin stdin si chiama si chiama !"!# !"!# e crea e crea
in memoria un canale di comunicazione diretto tra in memoria un canale di comunicazione diretto tra
due processi due processi
69 69
comando < file comando < file
stdin stdin da file da file
comando > file comando > file
stdout stdout in file (cancellato se esiste) in file (cancellato se esiste)
comando >> file comando >> file
stdout stdout aggiunto in coda al file aggiunto in coda al file
comando >& file comando >& file
stderr stderr e e stdout stdout in file in file
comando 2> file comando 2> file
stderr stderr in file (cancellato se esiste) in file (cancellato se esiste)
Ri Ri- -direzione direzione dell'/O dell'/O
70 70
comando > file 2>&1 comando > file 2>&1
comando &> file comando &> file
stdout stdout e e stderr stderr sullo stesso file sullo stesso file
descriptor descriptor
comando1 | comando2 comando1 | comando2
pipe tra comando1 e comando2 ( pipe tra comando1 e comando2 (stdout stdout
di comando1 in di comando1 in stdin stdin di comando2) di comando2)
Ri Ri- -direzione direzione dell'/O dell'/O
71 71
File di comandi (script) File di comandi (script)
E' possibile memorizzare in un file una serie E' possibile memorizzare in un file una serie
di comandi, eseguibili richiamando il file di comandi, eseguibili richiamando il file
stesso stesso
Esecuzione Esecuzione
Eseguendo Eseguendo bash bash script script argomenti argomenti sulla sulla
linea di comando linea di comando
Eseguendo direttamente Eseguendo direttamente script script
E' necessario che il file abbia il permesso di esecuzione, E' necessario che il file abbia il permesso di esecuzione,
ossia, dopo averlo creato si esegue: ossia, dopo averlo creato si esegue: chmod chmod +rx +rx file file
Per convenzione, la prima riga del file inizia con Per convenzione, la prima riga del file inizia con #! #!, ,
seguita dal nome dalla seguita dal nome dalla shell shell entro cui eseguire i comandi entro cui eseguire i comandi
(#!/ (#!/bin bin/ /bash bash) )
72 72
Esempio Esempio
#!/ #!/bin bin/ /bash bash
date date #restituisce #restituisce la data la data
who who #restituisce #restituisce chi connesso chi connesso
73 73
Variabili speciali Variabili speciali
La La bash bash memorizza gli argomenti della linea memorizza gli argomenti della linea
di comando dentro una serie di variabili di comando dentro una serie di variabili
$1, ... $1, ... $n $n
Alcune variabili speciali Alcune variabili speciali
$$ $$ PD del processo PD del processo shell shell
$0 $0 l programma corrispondente al processo corrente l programma corrispondente al processo corrente
$# $# il numero di argomenti il numero di argomenti
$? $? se esistono argomenti (no=0, si=1) se esistono argomenti (no=0, si=1)
$* $*, , $@ $@ tutti gli argomenti tutti gli argomenti
74 74
Variabili vettore Variabili vettore
Definizione Definizione
enumerando i valori tra parentesi tonde enumerando i valori tra parentesi tonde
Accesso ai campi Accesso ai campi
con la notazione del C usando le parentesi con la notazione del C usando le parentesi
quadre quadre
La valutazione dell'espressione richiede gli La valutazione dell'espressione richiede gli
operatori { } operatori { }
NOTA: gli indici partono da 0! NOTA: gli indici partono da 0!
75 75
Variabili vettore Variabili vettore
Esempio Esempio
# # v= v=(1 2 3) (1 2 3)
# # echo echo $v $v
1 1
# # echo $v[1] echo $v[1]
1[1] 1[1]
# # echo echo ${v[2]} ${v[2]}
3 3
76 76
Bash Bash nput/Output nput/Output
Per stampare un valore su standard output Per stampare un valore su standard output
echo echo espressione espressione
Nel caso si tratti di variabili, per stampare il Nel caso si tratti di variabili, per stampare il
valore, usare valore, usare $ $
Esempio Esempio
# X=1 # X=1
# # echo echo X X
X X
# # echo echo $X $X
1 1
77 77
Bash Bash nput/Output nput/Output
Per acquisire un valore da standard Per acquisire un valore da standard
input input
read read variabile variabile
Esempio Esempio
# read x # read x
pippo pippo
# echo $x # echo $x
pippo pippo
78 78
Bash Bash Strutture di controllo Strutture di controllo
if if [ [ condizione condizione ]; ];
then then azioni azioni; ;
fi fi
if if [ [ condizione condizione ]; ];
then then azioni azioni; ;
elif elif [condizione ]; [condizione ];
then then azioni azioni; ;
. .
else else
azioni azioni; ;
fi fi
Strutture Strutture
condizionali condizionali
79 79
Bash Bash Strutture di controllo Strutture di controllo
Le Le parentesi [ parentesi [ ] ] che racchiudono la condizione sono che racchiudono la condizione sono
in realt un'abbreviazione del comando in realt un'abbreviazione del comando test test, che pu , che pu
essere usato al loro posto essere usato al loro posto
Esempio Esempio
if if [ a=0 ]; [ a=0 ]; then then # # =senza =senza spazi! spazi!
echo echo $a $a; ;
fi fi
if if test a=0; test a=0; then then # # =senza =senza spazi! spazi!
echo echo $a $a; ;
fi fi
80 80
Bash Bash Test e condizioni Test e condizioni
Per specificare condizione in un Per specificare condizione in un if if
necessario conoscere il comando necessario conoscere il comando test test
test operando1 operatore operando2 test operando1 operatore operando2
81 81
Bash Bash Test e condizioni Test e condizioni
2 2 gli gli operandi operandi sono stringhe e sono uguali/diversi sono stringhe e sono uguali/diversi =, != =, !=
1 1 esiste un file leggibile/scrivibile/eseguibile esiste un file leggibile/scrivibile/eseguibile - -r, r, - -w, w, - -x x
2 2 gli gli operandi operandi sono interi e sono uguali/diversi sono interi e sono uguali/diversi - -eq eq, , - -neq neq
1 1 esiste un file con nome = operando esiste un file con nome = operando - -e e
2 2 operando1 <, > operando2 operando1 <, > operando2 - -It It, , - -gt gt
2 2 operando1 operando1! !, ," " operando2 operando2 - -Ie, Ie, - -ge ge
1 1
1 1
1 1
1 1
# di # di operandi operandi
esiste un file regolare con nome = operando esiste un file regolare con nome = operando - -f f
esiste una directory con nome = operando esiste una directory con nome = operando - -d d
operando ha lunghezza = 0 operando ha lunghezza = 0 - -z z
operando operando ha ha lunghezza lunghezza # # 0 0 - -n n
Vero se . Vero se . Operatore Operatore
Operatori principali ( Operatori principali (man test man test per altri) per altri)
82 82
Bash Bash Strutture di controllo Strutture di controllo
case selettore
case1): azioni;;
case2): azioni;;
.
): azioni;;
esac
83 83
Bash Bash Strutture di controllo Strutture di controllo
Esempio Esempio
if if [ [ - -e e $HOME $HOME/ /.bash_profile .bash_profile ]; ]; then then
echo echo you you have have a a .bash_profile .bash_profile file; file;
else else
echo echo you you have have no no .bash_profile .bash_profile file; file;
fi fi
84 84
Bash Bash Strutture di controllo Strutture di controllo
Esempio Esempio
echo echo Hit a Hit a key key, , then then hit return. hit return.
read read Keypress Keypress
case case $Keypress $Keypress in in
[a [a- -z]) z]) echo echo Lowercase Lowercase letter letter;; ;;
[A [A- -Z]) Z]) echo echo Upper Upper letter letter;; ;;
[0 [0- -9]) 9]) echo echo Digit Digit;; ;;
* ) * ) echo echo other other;; ;;
esac esac
85 85
Bash Bash Strutture di controllo Strutture di controllo
Ciclo Ciclo for for
for for arg arg in [ in [lista lista] ]
do do
comandi comandi
done done
- - lista lista pu essere pu essere
un elenco di valori un elenco di valori
una variabile (corrispondente ad una lista di valori) una variabile (corrispondente ad una lista di valori)
un meta un meta- -carattere che pu espandersi in una lista di valori carattere che pu espandersi in una lista di valori
n assenza della clausola n assenza della clausola in in, il , il for for opera su opera su $@ $@, cio la lista , cio la lista
degli argomenti degli argomenti
E' previsto anche un ciclo E' previsto anche un ciclo for for che utilizza la stessa sintassi del che utilizza la stessa sintassi del
for for C/ava C/ava
86 86
Bash Bash Strutture di controllo Strutture di controllo
Esempi Esempi
for for file in *.c file in *.c
do do
ls ls - -l l $file $file
done done
******************************************************** ********************************************************
LIMIT=10 LIMIT=10
for for ((a=1;a <= LIMIT; a++)) ((a=1;a <= LIMIT; a++))
# Doppie parentesi e LIMITsenza $ # Doppie parentesi e LIMITsenza $
do do
echo echo - -n n $a $a
done done
87 87
Bash Bash Strutture di controllo Strutture di controllo
Ciclo Ciclo while while
while while [ [ condizione condizione ] ]
do do
comandi comandi
done done
La parte tra La parte tra [] [] indica l'utilizzo del comando indica l'utilizzo del comando
test (come per test (come per if if) )
E' previsto anche un ciclo E' previsto anche un ciclo while while che utilizza che utilizza
la stessa sintassi C/ava la stessa sintassi C/ava
88 88
Bash Bash Strutture di controllo Strutture di controllo
Esempio Esempio
LIMIT=10 LIMIT=10
a=1 a=1
while while [ [ $a $a - -le le $LIMIT $LIMIT ] ]
# oppure # oppure
while while ((a <= LIMIT)) ((a <= LIMIT))
do do
echo echo - -n n $a $a
let let a+=1 a+=1
done done
89 89
Bash Bash Strutture di controllo Strutture di controllo
Ciclo Ciclo until until
until until [ [ condizione vera condizione vera ] ]
do do
comandi comandi
done done
La parte tra La parte tra [] [] indica l'utilizzo del comando indica l'utilizzo del comando
test (come per test (come per if if) )
90 90
Bash Bash Strutture di controllo Strutture di controllo
Esempio Esempio
LIMIT=10 LIMIT=10
a=1 a=1
until until [ [ $a $a - -gt gt $LIMIT $LIMIT ] ]
do do
echo echo - -n n $a $a
let let a a+=1 #oppure a=$(( a+1 )) +=1 #oppure a=$(( a+1 ))
done done
91 91
Bash Bash Funzioni Funzioni
E' possibile usare sottoprogrammi (funzioni) E' possibile usare sottoprogrammi (funzioni)
Sintassi della definizione Sintassi della definizione
function function nome nome { {
comandi comandi
} }
La funzione vede quali parametri $1, .$n, come La funzione vede quali parametri $1, .$n, come
fosse uno script indipendentemente dal resto fosse uno script indipendentemente dal resto
Valore di ritorno tramite il comando Valore di ritorno tramite il comando return return valore valore
Codice di uscita tramite il comando Codice di uscita tramite il comando exit( exit(valore valore) )
92 92
Bash Bash Funzioni Funzioni
Esempio Esempio
function function quit quit { {
exit exit
} }
function function e { e {
echo echo $1 $1
} }
e e Hello Hello World # World #main main dello script dello script
quit quit
93 93
Bash Bash Funzioni Funzioni
function func2 { function func2 {
if [ if [ - -z $1 ] ; then z $1 ] ; then
echo echo Parametro Parametro 1 ha 1 ha lunghezza lunghezza 0; 0;
else else
echo echo Parametro Parametro 1 e' $1; 1 e' $1;
fi fi
return 0 return 0
} }
func2 $1 func2 $1
94 94
Bash Bash Uso output di un comando Uso output di un comando
E' possibile utilizzare l'output di un comando come "dati E' possibile utilizzare l'output di un comando come "dati
all'interno di un altro comando all'interno di un altro comando
Tramite l'operatore " Tramite l'operatore "` ` ` `
Sintassi Sintassi
- - ` `comando comando` ` ( (` ` = ALT+96 su tastiera italiana) = ALT+96 su tastiera italiana)
- - $( $(comando comando) )
Esempio Esempio
Cancellazione di tutti i file con il nome Cancellazione di tutti i file con il nome test test.log .log contenuti contenuti
nell'albero delle directory nell'albero delle directory /home/ /home/joe joe
rm rm ` `find find /home/ /home/joe joe - -name name test.log` test.log`
95 95
Bash Bash Filtri Filtri
Programmi che ricevono dati di ingresso da Programmi che ricevono dati di ingresso da stdin stdin e e
generano risultati su generano risultati su stdout stdout
Molto utili assieme alla Molto utili assieme alla ri ri- -direzione direzione dell'/O dell'/O
Alcuni dei filtri pi usati sono Alcuni dei filtri pi usati sono
more more
sort sort
grep grep, , fgrep fgrep, , egrep egrep
cut cut
head, head, tail tail
uniq uniq
wc wc
awk awk ( (sed sed) )
96 96
Bash Bash grep grep
Per cercare se una stringa compare all'interno di un Per cercare se una stringa compare all'interno di un
file file
grep grep [ [- -opzioni] pattern file opzioni] pattern file
Opzioni Opzioni
- -c c conta le righe che contengono il pattern conta le righe che contengono il pattern
- -i i ignora la differenza maiuscolo/minuscolo ignora la differenza maiuscolo/minuscolo
- -l l elenca solo i nomi dei file contenenti il pattern elenca solo i nomi dei file contenenti il pattern
- -n n indica il numero d'ordine delle righe indica il numero d'ordine delle righe
- -v v considera solo righe che non contengono il considera solo righe che non contengono il
pattern pattern
97 97
Bash Bash Espressioni regolari Espressioni regolari
un carattere qualunque un carattere qualunque
inizio riga inizio riga
fine riga fine riga
ripetizione (zero o pi volte) ripetizione (zero o pi volte)
ripetizione (una o pi volte) ripetizione (una o pi volte)
un carattere tra quelli in parentesi un carattere tra quelli in parentesi
un carattere esclusi quelli in parentesi un carattere esclusi quelli in parentesi
inizio parola inizio parola
fine parola fine parola
. .
^ ^
$ $
* *
+ +
[ ] [ ]
[^] [^]
\ \< <
\ \> >
pattern di ricerca in pattern di ricerca in grep grep possono essere normali possono essere normali
stringhe di caratteri o espressioni regolari. n questo stringhe di caratteri o espressioni regolari. n questo
caso, alcuni caratteri hanno un significato speciale (a caso, alcuni caratteri hanno un significato speciale (a
meno che siano preceduti da meno che siano preceduti da ) )
98 98
Bash Bash Varianti di Varianti di grep grep
fgrep fgrep [ [option option] [ ] [string string] [file] . ] [file] .
pattern di ricerca sono stringhe pattern di ricerca sono stringhe
E' veloce e compatto E' veloce e compatto
egrep egrep [ [option option] [ ] [string string] [file] . ] [file] .
pattern di ricerca sono delle espressioni pattern di ricerca sono delle espressioni
regolari estese regolari estese
E' potente ma lento E' potente ma lento
Richiede molta memoria Richiede molta memoria
99 99
Bash Bash Ordinamento di dati Ordinamento di dati
sort sort [ [- -opzioni] file . opzioni] file .
Opzioni Opzioni
- -b b ignora gli spazi iniziali ignora gli spazi iniziali
- -d d (modo alfabetico) confronta solo lettere, cifre e (modo alfabetico) confronta solo lettere, cifre e
spazi spazi
- -f f ignora la differenza maiuscolo/minuscolo ignora la differenza maiuscolo/minuscolo
- -n n (modo numerico) confronta le stringhe di cifre (modo numerico) confronta le stringhe di cifre
in modo numerico in modo numerico
- -o file o file scrive i dati da ordinare in scrive i dati da ordinare in file file
- -r r ordinamento inverso ordinamento inverso
- -t carattere t carattere usa usa carattere carattere come separatore per i campi come separatore per i campi
- -k S1,S2 k S1,S2 usa i campi dalla posizione S1 alla S2 usa i campi dalla posizione S1 alla S2
100 100
Bash Bash Selezione di Campi Selezione di Campi
cut cut - -clista clista file file
cut cut - -flista flista [ [- -dchar dchar] [ ] [- -s] file s] file
- - lista lista specifica un intervallo del tipo specifica un intervallo del tipo
- - a,b a,b significa significa a a' e ' e b b' '
- - a a- -b b significa da significa da a a' a ' a b b' '
101 101
Bash Bash Selezione di Campi Selezione di Campi
Opzioni Opzioni
- -c c seleziona per caratteri seleziona per caratteri
- -f f seleziona per campi seleziona per campi
l campo definito dal separatore l campo definito dal separatore
( (default default carattere TAB) carattere TAB)
- -dchar dchar char char usato come separatore usato come separatore
- -s s considera solo le linee che contengono il separatore considera solo le linee che contengono il separatore
Esempi Esempi
cut cut - -c1 c1- -12 file 12 file
prende i primi 12 caratteri di ogni riga del file prende i primi 12 caratteri di ogni riga del file
cut cut - -c1, 4 file c1, 4 file
prende il campo 1 e 4 di ogni riga del file prende il campo 1 e 4 di ogni riga del file
cut cut - -f1 f1- -4 file 4 file
prende i primi 4 campi di ogni riga del file prende i primi 4 campi di ogni riga del file
102 102
Bash Bash Selezione di Campi Selezione di Campi
Altri esempi Altri esempi
cut cut - -d d: : - -f1,5 / f1,5 /etc etc/ /passwd passwd
Estrae Estrae user user e nome completo degli utenti e nome completo degli utenti
ps ps - -x x | cut | cut - -d d - -f1 f1
Elenca i PD dei processi nel sistema Elenca i PD dei processi nel sistema
103 103
Bash Bash wc wc
wc wc [ [- -c] [ c] [- -l] [ l] [- -w] file w] file
Legge i file nell'ordine e conta il numero di caratteri, Legge i file nell'ordine e conta il numero di caratteri,
linee e parole linee e parole
Opzioni Opzioni
- -c c conta solo i caratteri conta solo i caratteri
- -l l conta solo le righe conta solo le righe
- -w w conta solo le parole conta solo le parole
Esempio Esempio
ps ps - -x | x | tail tail +2 | +2 | wc wc - -l l
Conta il numero di processi attivi ( Conta il numero di processi attivi (tail tail +2 per togliere +2 per togliere
l'intestazione) l'intestazione)
104 104
Bash Bash uniq uniq
uniq uniq [ [- -u][ u][- -c] file c] file
Trasferisce l'input sull'output sopprimendo Trasferisce l'input sull'output sopprimendo
duplicazioni contigue di righe duplicazioni contigue di righe
Assume che l'input sia ordinato Assume che l'input sia ordinato
Opzioni Opzioni
- -u u visualizza solo righe non ripetute visualizza solo righe non ripetute
- -c c visualizza anche il contatore del numero di visualizza anche il contatore del numero di
righe righe