Sei sulla pagina 1di 61

CORSO DI

LABORATORIO DI SISTEMI OPERATIVI I


UNIVERSITÀ DEGLI STUDI DI CAGLIARI
Dipartimento di Matematica e Informatica
Via Ospedale 72, 09124 Cagliari - Italy
GESTIONE
AVANZATA DEI SISTEMI LINUX – PARTE 1

2
TIPI DI FILE

 Per visualizzare a video l'elenco dei file contenuti all'interno


di una directory occorre usare il comando ls.
 Infatti ls sta per list (elenca). Il comando ls accetta varie
opzioni come ­a, ­l o ­i.
 L'opzione ­l (l sta per long, cioè lunga, estesa) permette di
visualizzare alcuni dettagli importanti di ciascun file.
 Perciò il comando ls da solo visualizza l'elenco dei file di
una directory ma usato con l'opzione ­l visualizza alcuni
importanti dettagli. Ad esempio:
ls –l
­rw­r­­r­x 1 lau utenti 207 Feb 20 11:55 file1
­rwxr­­r­­ 1 lau utenti 120 Feb 21 10:15 file2
­r­­r­­r­­ 1 lau utenti 558 Feb 12 10:22 file3
­rw­r­x­­­ 1 lau utenti 210 Feb 18 12:10 file4 
 Il nome del file è l'ultima informazione presente in ogni riga.
3
TIPI DI FILE

 Il nome del file è l'ultima informazione presente in


ogni riga.
 Il primo carattere indica il tipo di file e può essere un
trattino o una 'd'. Il trattino indica un comune file,
mentre la 'd' indica che si tratta di una directory.
 I tipi di file possibili sono 8:
 - file regolare
 d directory
 l link (collegamento)
 b periferica a blocchi con buffer
 c periferica a caratteri con buffer
 u periferica a caratteri senza buffer
 p pipe FIFO
 s socket
4
INFORMAZIONI DISPONIBILI

­rw­r­x­­­ 1 lau utenti 210 Feb 18 12:10 file4 
 Gli altri 9 caratteri successivi al primo indicano i
permessi di accesso al file.
 Segue il numero di link, il nome del proprietario del
file, il nome del gruppo a cui appartiene il
proprietario, le dimensioni in byte, la data e l'ora
dell'ultima modifica ed infine il nome del file stesso.
 Nell'esempio precedente il file 'file4' è lungo 210
byte (210 caratteri) è stato modificato il 18
febbraio alle ore 12:10. Il suo proprietario è lau che
appartiene al gruppo utenti. Questo file ha un unico
link e non è una directory ma un comune file.
5
PERMESSI SUI FILE

­rw­r­x­­­ 1 lau utenti 210 Feb 18 12:10 file4 
 I permessi sono riferiti a 3 categorie di utenti: il proprietario
del file, il gruppo di utenti a cui appartiene il proprietario ed
infine tutti gli altri utenti che posseggono un account sul
sistema.
 Un file può essere letto o visualizzato se ne si possiede il
permesso in lettura; può essere sovrascritto, cancellato o
modificato se se ne possiede il permesso in scrittura; può
essere eseguito se se ne possiede il permesso in esecuzione.
 I permessi di accesso al file sono 9 caratteri suddivisi in
blocchetti di 3. I primi 3 caratteri sono relativi al proprietario
del file, i successivi 3 sono relativi al gruppo al quale
appartiene il proprietario e gli ultimi 3 sono relativi a tutti gli
altri utenti del sistema. Ogni terna può contenere i caratteri
'-', 'r', 'w' o 'x'. Il carattere '-' disabilita un permesso.
6
PERMESSI SUI FILE

­rw­r­x­­­ 1 lau utenti 210 Feb 18 12:10 file4 
 Il primo carattere di ciascuna terna può assumere i valori
'-' o 'r'. Il carattere 'r' indica la possibilità di leggere il file
(r sta per read, cioè lettura) mentre il carattere '-' al
contrario indica che la lettura di tale file non è possibile.
 Il secondo carattere di ciascuna terna può assumere i
valori '-' o 'w'. Il carattere 'w' indica la possibilità di
scrivere il file (w sta per write, cioè scrittura). Perciò la
presenza di una 'w' indica che il file è scrivibile mentre la
presenza del carattere '-' indica che tale file non può
essere sovrascritto o modificato.
 Infine il terzo carattere di ciascuna terna può assumere i
valori '-' o 'x'. Il carattere 'x' indica la possibilità di
eseguire il file (x sta per eXecute, cioè esecuzione). Al
solito il carattere '-' indica che tale file non è eseguibile
mentre il carattere 'x' lo rende eseguibile.
7
PERMESSI SUI FILE
 Un file che può essere visto, modificato ed eseguito da qualsiasi
utente del sistema avrà tutti i permessi di accesso abilitati, perciò
le tre terne saranno valorizzate così: rwx rwx rwx.
 Ciò significa infatti che il proprietario del file lo potrà leggere
scrivere ed eseguire, ma anche il gruppo a cui appartiene il
proprietario potrà leggere, scrivere ed eseguire tale file; stessa
cosa per tutti gli altri utenti, che potranno leggere, scrivere ed
eseguire il file.
 Inizialmente un file contenuto all'interno di una directory eredita i
permessi che possiede la directory (che come ricordiamo è essa
stessa un file) ma è possibile cambiare tali permessi ricorrendo al
comando chmod.
 L'utente root o supervisore è il proprietario di tutti i file del
sistema, pertanto può leggere, scrivere ed eseguire qualsiasi file.
Inoltre l'utente root può modificare i permessi dei file in modo da
allargare o restringere l'accesso ad alcuni file agli altri utenti del
sistema.
8
PERMESSI SUI FILE

­rw­r­x­­­ 1 lau utenti 210 Feb 18 12:10 file4 
 Se osserviamo la prima terna allora stiamo considerando i
permessi di accesso al file posseduti dal proprietario, se
osserviamo la seconda terna stiamo considerando i permessi
posseduti dal gruppo a cui appartiene il proprietario ed infine,
se osserviamo la terza terna, stiamo considerando i permessi
di accesso posseduti da tutti gli altri utenti su tale file.
 Nell'esempio precedente il file file4 è di proprietà dell'utente
lau. L'utente lau può leggere tale file (carattere 'r' presente),
può sovrascriverlo o modificarlo (carattere 'w' presente) ma
non può eseguirlo (carattere 'x' non presente).
 Il gruppo utenti (a cui appartiene lau) può invece leggere tale
file ed eseguirlo, ma non può modificarlo. Tutti gli altri utenti
del sistema non possono nè visualizzare, nè scrivere, nè
eseguire il file.
9
PERMESSI ED UTILIZZO DEL SISTEMA
 Generalmente un utente possiede una propria directory (home
dell’utente) all'interno della quale può creare, modificare
eseguire e leggere qualsiasi file.
 L'accesso a file contenuti all'interno di altre directory esterne
alla directory home è solitamente inibito per motivi di
sicurezza, al fine di evitare un accidentale danneggiamento di
file di sistema vitali.
 Viceversa, l'utente root in quanto amministratore del sistema
deve poter accedere a qualsiasi file.
 Il tipico modo di operare consiste nell'utilizzare il sistema come
utente root solo per il tempo minimo indispensabile a svolgere
le operazioni di amministrazione, autenticandosi come un
utente non privilegiato in tutti gli altri casi.
 Ovviamente, se un utente non possiede il permesso di lettura
su un file, non potrà neppure modificarne i permessi di
accesso.
10
MODIFICA SIMBOLICA DEI PERMESSI

 Per modificare i permessi di accesso di un file occorre usare il comando


chmod. Tale comando accetta due argomenti: un elenco di variazioni di
permessi ed un elenco di file sui quali agire. Per abilitare un permesso
occorre usare il simbolo '+' affianco al tipo di permesso che si desidera
modificare. Ad esempio la stringa '+w' abilita il permesso di scrittura mentre
la stringa '+x' abilita il permesso di esecuzione.
 Al contrario per disabilitare un permesso occorre usare il simbolo '-'. È
possibile usare una qualsiasi combinazione di questi simboli. Ad esempio, il
comando:
  chmod +w­x dati
 abilita la scrittura e disabilita l'esecuzione del file 'dati' per tutti gli utenti.
Per specificare la tipologia di utenti ai quali abilitare o disabilitare dei
permessi esistono 3 simboli: 'u', 'g' ed 'o'. Il simbolo 'u' sta per user ed indica
il proprietario del file, il simbolo 'g' sta per group ed indica il gruppo di utenti
del quale fa parte il proprietario ed infine 'o' sta per other, cioè tutti gli altri
utenti. Il simbolo che specifica la categoria di utenti per i quali si desidera
modificarne i permessi va specificato prima degli altri simboli.
11
MODIFICA SIMBOLICA DEI PERMESSI
Ad esempio, il seguente comando abilita il gruppo di utenti del quale
fa parte il proprietario del file per la scrittura e li disabilita per
l'esecuzione.

chmod g+w-x dati


Per abilitare più permessi non occorre ripetere il simbolo '+' più volte,
così come non è necessario per il simbolo '-'

Ad esempio per abilitare sia la lettura che la lettura si può scrivere


+rw mentre per abilitare in lettura e disabilitare la scrittura e
l'esecuzione occorrerà scrivere +r-wx e così via

12
MODIFICA SIMBOLICA DEI PERMESSI

 Quando non viene esplicitamente specificata


una categoria di utenti (u, g, oppure o), il
comando modifica i permessi per tutte le
categorie
 La medesima cosa avviene quando si utilizza

il carattere a (all), il cui uso è quindi superfluo


in questi casi
 Da osservare che tra i vari caratteri non

occorre inserire alcuno spazio

13
MODIFICA BINARIA/OTTALE DEI PERMESSI
 Il modo di specificare i permessi di accesso che utilizza i
simboli r, w e x viene definito simbolico ma non è l'unico
modo possibile: esiste infatti un altro modo definito
assoluto. Il modo assoluto utilizza le cosiddette maschere
binarie.
 È possibile specificare i permessi per ogni categoria di
utenti singolarmente usando il metodo simbolico ma è
anche possibile specificare tutti i permessi di tutte le
categorie di utenti contemporaneamente usando le
maschere binarie.
 Il vantaggio delle maschere binarie è la possibilità di
cambiare tutti i permessi usando un solo comando, lo
svantaggio è minore semplicità d'uso. Infatti il metodo
simbolico fa uso di simboli che sono abbastanza facili da
ricordare (r per lettura, w per scrittura e via dicendo).
14
MODIFICA BINARIA/OTTALE DEI PERMESSI
 Il metodo assoluto al contrario fa uso di maschere binarie. In
una maschera binaria le tre categorie di utenti ossia le tre
terne di simboli diventano 3 cifre in formato ottale, nel senso
che ciascuna categoria è rappresentata da un numero in base
8. Ogni numero ottale è equivalente ad un numero di 3 cifre
binarie:
 0 - 000
 1 - 001
 2 - 010
 3 - 011
 4 - 100
 5 - 101
 6 - 110
 7 - 111
 La cifra ottale 0 corrisponde alla cifra binaria 000 mentre la

cifra ottale 4 ad esempio, corrisponde alla cifra binaria 100.


15
MODIFICA BINARIA/OTTALE DEI PERMESSI

 Considerando ciascuno di questi 3 numeri binari


possiamo abilitare o disabilitare un permesso.
 Il primo numero corrisponde al permesso di lettura, il
secondo al permesso di scrittura ed il terzo al
permesso di esecuzione.
 Il numero zero corrisponde ad un permesso
disabilitato, mentre il numero 1 corrisponde ad un
permesso abilitato.
 La cifra ottale 5 ad esempio, corrisponda alla cifra
binaria 101, e codifica lettura abilitata, scrittura
disabilitata ed esecuzione abilitata. Così 000 disabilita
tutti i permessi mentre 111 al contrario li abilita tutti.
16
MODIFICA BINARIA/OTTALE DEI PERMESSI

 Tradotto in base ottale significa che 0 disabilita tutti i permessi


mentre 7 li abilita tutti, 4 abilita solo la lettura, 1 solo l'esecuzione e
così via.
 1 - 001 - --x
 2 - 010 - -w-
 3 - 011 - -wx
 4 - 100 - r--
 5 - 101 - r-x
 6 - 110 - rw-
 7 - 111 - rwx
 Per rappresentare le 3 terne corrispondenti alle tre categorie di
utenti sono sufficienti 3 cifre ottali. La prima cifra ottale infatti è
relativa al proprietario del file, la seconda al gruppo a cui appartiene
e la terza a tutti gli altri utenti del sistema.
 Ad esempio, per abilitare tutti i permessi al proprietario del file 'dati'
e permettere a tutti gli altri utenti solo la lettura e l'esecuzione
occorrerà usare il comando chmod in questo modo:
chmod 755 dati 
17
MODIFICA BINARIA/OTTALE DEI PERMESSI

 Usando questo sistema


 con 000 disabilitiamo tutti i permessi a tutti gli utenti
proprietario compreso (non consigliabile)
 con 777 abilitiamo tutti i permessi a tutti gli utenti
(altamente non consigliabile)
 Con tale sistema è possibile ad esempio fornire
tutti i permessi al proprietario del file e permettere
unicamente la lettura del file stesso a tutti gli altri
utenti specificando unicamente la cifra 744.
 Sebbene apparentemente più complesso,
calcolare di volta in volta le cifre ottali a partire
dalla maschera binaria è abbastanza semplice.
18
MODIFICA BINARIA/OTTALE DEI PERMESSI
 Consideriamo la seguente tabella:
 4 - 100 - r--
 2 - 010 - -w-
 1 - 001 - --x
 la cifra ottale 4 abilita il permesso in lettura, la cifra 2 il
permesso in scrittura e la cifra 1 il permesso in
esecuzione. Bene, a questo punto per ricavare tutte le
combinazioni di permessi possibili è sufficiente sommare
queste 3 cifre ottali. Ad esempio, per abilitare lettura e
scrittura occorre sommare 4 e 2 per ottenere 6 (che
come si può osservare nella tabella precedente
corrisponde proprio alla stringa 'rw-' cioè lettura e
scrittura abilitate ed esecuzione disabilitata). Per
abilitare lettura ed esecuzione è sufficiente sommare 4
ad 1 per ottenere 5 (cioè 'r-x').
19
PERMESSI DI ACCESSO ALLE DIRECTORY

 Come già detto le directory sono esse stesse dei file anche se
speciali

 Conseguentemente è possibile specificare i permessi di accesso


anche per le directory, così come appena visto per I file

 Esistono comunque delle piccole differenze nel risultato ottenuto,


dovute alle differenze esistenti tra un file ed una directory

20
PERMESSI DI ACCESSO ALLE DIRECTORY

Per esempio, il permesso di lettura su una directory


consente di elencare tutti i file in essa contenuti

Mentre il permesso di scrittura consente di aggiungere


nuovi file al suo interno

Il permesso di esecuzione, infine, consente di accedere


all'interno della directory

21
PERMESSI DI ACCESSO ALLE DIRECTORY

Se un file leggibile, scrivibile ed eseguibile viene posto all'interno di


una directory che non è accessibile (perché ha il permesso di


esecuzione disabilitato) il file stesso diventa inaccessibile

Per accedere ad un file pertanto, non è sufficiente abilitarne i


permessi ma occorre che la directory che lo contiene, così come la


directory genitrice e tutte le altre directory padre siano abilitate in
esecuzione

Non occorre che tali directory siano abilitate anche in lettura. In


questo modo si potrà accedere al file accedendo a tutte le directory


del percorso senza però poter visionare il contenuto di tutte le
directory

22
CAMBIARE IL PROPRIETARIO DI UN FILE
 Anche se un utente può accedere ad un file, solo il proprietario può
cambiarne i permessi. Se si vuole quindi cedere il controllo di un
file ad un altro utente, occorre cambiarne il proprietario. Per
cambiare il proprietario di un file occorre usare il comando chown.
Chown sta per 'change owner', cioè cambia proprietario.
 Il comando chown accetta due argomenti il primo che è il nome del
nuovo proprietario e il secondo che è il nome di un file o un elenco
di file. Ad esempio per cambiare il proprietario di guida.htm
occorre scrivere:
chown franca guida.html 
 Se visualizziamo il file guida.html prima del comando chown infatti,
otteniamo:
ls ­l guida.html
­rw­r­­r­­ 1 lau utenti 2500 Feb 11 12:55 guida.html 
 ma una volta eseguito il comando chown avremo:
  ls ­l guida.html
  ­rw­r­­r­­ 1 franca utenti 2500 Feb 11 12:55 guida.html 
23
CAMBIARE IL GRUPPO DI UN FILE

 Allo stesso modo è possibile cambiare il gruppo su un


file utilizzando questa volta il comando chgrp. Il
comando chgrp sta per 'change group' cioè cambia
gruppo ed accetta 2 argomenti: il nuovo gruppo ed il
file (o l'elenco di file) che deve essere modificato.
 Attenzione: i comandi chmod, chown e chgrp non
hanno effetto su file system di tipo FAT (opzione ­t 
vfat del comando mount). Questo perché il file
system di tipo FAT non supporta i permessi sui file
come Linux. Quindi, nel caso si abbia un sistema con
dual boot dove convivono Linux e Windows nello
stesso disco e si tenti di eseguire il comando chmod, si
otterrà il messaggio di errore: 'operation not
permitted'. In altre parole una partizione Windows
avrà root come proprietario di default.
24
LINK FISICI E SIMBOLICI

25
LINK FISICI E SIMBOLICI: LINK FISICO
 Il nome di un file rappresenta un riferimento ad un punto all'interno del
disco dove sono memorizzati i dati contenuti nel file stesso. In realtà
sarebbe più corretto dire che ad ogni nome di file viene associato l'i-node
del file stesso. Cioè, per ogni file esiste una coppia 'nome file'/i-node

 Il collegamento tra il nome del file e l'indirizzo fisico dove si trova il file
viene definito 'link': è possibile creare un link ad un file mediante il
comando ln:

 Il numero che precede il nome del proprietario del file (nel successivo
esempio: lau) è il numero di link che tale file possiede. Per il file doc1
esiste quindi un solo link (il nome del file stesso):

ls -l doc1
-rw-rw--rw 1 lau utenti 553, Jul 18 2016 /home/lau/doc1

26
LINK FISICI E SIMBOLICI: LINK FISICO

 Linux mette a disposizione il comando ln (link) che


permette di creare ulteriori link ad un file, cioè
creare un ulteriori nomi per referenziarlo:
ls
file1, file2, file3 (la directory corrente contiene 3 file)

ls ­l file1
­rw­rw­­rw 1 lau utenti 553 Jul 18 1994 /home/lau/file1

ln file1 data1 (creo il secondo nome data1 per file1)
ls
file1, file2, file3, data1

ls ­l file1
­rw­rw­­rw 2 lau utenti 553 Jul 18 1994 /home/lau/file1

ls ­l data1
­rw­rw­­rw 2 lau utenti 553 Jul 18 1994 /home/lau/data1
27
LINK FISICI E SIMBOLICI: LINK FISICO

file1 e data1 hanno 2 come numero di link, il che significa che


data1 è semplicemente un altro nome che referenzia sempre lo
stesso file.
Attenzione: data1 non è la copia di file1 ma si tratta proprio dello
stesso file. Se si modifica file1 e si visualizza il contenuto di data1 si
noterà che data1 è identico a file1.

Se data1 fosse stata una copia di file1, modificando file1, data1


sarebbe rimasto invariato.

Poichè data1 è un secondo nome dello stesso file, cancellando file1


sarà sempre possibile far riferimento al file usando data1.

Un file viene cancellato effettivamente solo quando vengono


eliminati tutti i suoi link.
28
LINK FISICI E SIMBOLICI: LINK FISICO

 Questo appena visto è un link fisico (hard link) e


può ad esempio essere utile per far riferimento ad
un file da una directory diversa da quella
all'interno della quale si trova il file.

 Ad esempio, file1 potrebbe risiedere nella


directory /home/lau mentre il link data1 potrebbe
risiedere nella directory /home/franca. Si potrà
accedere al file1 dalla directory /home/lau, oppure
dalla directory /home/franca usando il riferimento
data1.
29
LINK FISICI E SIMBOLICI: LINK SIMBOLICO

Se è possibile creare un numero arbitrario di nomi per un unico file,


non è possibile farlo con le directory

Non è possibile creare un link fisico ad una directory, ma possiamo


crearne uno simbolico

Un link simbolico non è un nome aggiuntivo ma è un file speciale


che contiene al suo interno il puntatore al file, cioè il percorso da
fare per raggiungere il file. Per creare un link simbolico usiamo il
comando ln con l'opzione -s:

ln -s nome_file nome_link
questo comando crea un file nome_link che punta al file (o alla
directory) nome_file.
30
LINK FISICI E SIMBOLICI: LINK SIMBOLICO

 Per evidenziare la presenza di un link


simbolico si può usare il comando ls con le
opzioni i ed l:
15437l rw­rw­­rw 1 lau utenti 5 Jul 18 
1994 /home/lau/data1 ­> /home/lau/file1

 Con un link simbolico è possibile far


riferimento ad un file che si trova in un
dispositivo diverso o addirittura in un file
system diverso.
31
CONFIGURAZIONE DELLA SHELL

32
CONFIGURAZIONE DELLA SHELL

 La shell BASH ha delle impostazioni standard generali


per tutti gli utenti, ma ogni utente può avere una
versione personalizzata della propria shell
modificando opportunamente alcuni file di
configurazione. All'interno di questi file sono presenti
delle variabili che contengono dei valori predefiniti.
 Una variabile è un'area di memoria alla quale viene
assegnato uno specifico valore. Tale area viene
creata al momento del login e viene distrutta al
momento del logout.
 Ad esempio la variabile USER contiene il nome
dell'utente che ha effettuato il login. Quando un
utente effettua il login nel sistema, Linux crea una
shell di login ed inizializza alcune variabili con dei
valori predefiniti.
33
CONFIGURAZIONE DELLA SHELL

 L'utente può creare delle variabili personali


e può modificare alcune di quelle
predefinite dal sistema. Per convenzione le
variabili della shell sono definite con nomi
costituiti da lettere maiuscole. Ad esempio,
la variabile HOME definisce il percorso della
directory home dell'utente.
 Le variabili vengono inizializzate dal
sistema al momento del login da parte di
un utente e vengono distrutte al momento
del logout, cioè quando l'utente si scollega
dal sistema.
34
TIPI DI PARAMETRI

 Nella documentazione originale di bash si utilizza il


termine "parametro" per identificare diversi tipi di entità:
 parametri posizionali;
 parametri speciali;
 variabili di shell.
 Ci riferiremo con il termine "parametro" solo ai primi due
tipi di entità.
 L'elemento comune tra i parametri e le variabili è il
modo con cui questi devono essere identificati quando si
vuole leggere il loro contenuto: occorre il simbolo $
davanti al nome (o al simbolo) dell'entità in questione,
mentre per assegnare un valore all'entità (sempre che
ciò sia possibile), questo prefisso non deve essere
indicato.

35
VARIABILI DI AMBIENTE

 Una variabile è definita quando contiene un valore,


compresa la stringa vuota. L'assegnazione di un
valore si ottiene con una dichiarazione del tipo
seguente.
<nome­di­variabile>=[<valore>] 
 Il nome di una variabile può contenere lettere, cifre
numeriche e il segno di sottolineatura, ma il primo
carattere non può essere un numero.
 Se non viene fornito il valore da assegnare, si
intende la stringa vuota. La lettura del contenuto di
una variabile si ottiene facendone precedere il
nome dal simbolo $.
36
VARIABILI DI AMBIENTE

 GROUPS Un array contenente i numeri GID di cui l'utente


è membro
 HOSTTYPE Il nome del tipo di computer.
 OSTYPE Il nome del sistema operativo.
 MACHTYPE Architettura e sistema operativo utilizzato.
 BASH_VERSION Il numero di versione di bash.
 BASH Il percorso completo della copia corrente di bash.
 PPID Il PID del processo genitore della shell attuale.
 UID User ID dell’utente corrente
 PATH I percorsi di ricerca per i comandi.
 HOME La directory home dell'utente.
 CDPATH Il percorso di ricerca per il comando cd.
 PS1 Il prompt primario (predefinito ``bash\$ '')
 PS2 Il prompt secondario. (predefinito ``>'’)
37
VARIABILI DI AMBIENTE

 PATH è un elenco di directory separato da


due punti (:). Rappresenta l'insieme dei
percorsi di ricerca di vari comandi. Il
valore predefinito dipende dalla
configurazione di bash e un valore comune
potrebbe essere /bin:/usr/bin:/usr/local/bin
 PS1 è il prompt primario. Un esempio
possibile è \u@\h:\w\$ che in particolare
mostra anche il nome dell'utente come
nell'esempio seguente.
 droms@dedalus:~$
 38
VARIABILI DI AMBIENTE
 Una variabile ha vita solo all'interno della shell nella quale viene
creata, pertanto cambiando shell, il sistema non riconosce più tale
variabile.
 Affinchè una variabile sia visibile all'interno di qualsiasi shell,

occorre 'esportarla' mediante il comando export. Ad esempio:


MYVAR="testo di prova"
  export MYVAR (ora la variabile MYVAR è visibile da qualsiasi shell)
 Per visualizzare le variabili definite si può usare il comando set,

mentre per visualizzare le variabili di ambiente occorre usare il


comando env. Le variabili di ambiente sono tutte quelle variabili
predefinite all'interno della shell che troviamo normalmente
all'interno di un sistema Linux.
 Per visualizzare il contenuto di una variabile invece, occorre usare il

comando echo insieme all'operatore '$'. L'operatore $ serve per far


riferimento al contenuto di una variabile. Ad esempio il comando:
  echo $MYVAR
visualizza a video il contenuto della variabile MYVAR.
39
GESTIRE IL SISTEMA MEDIANTE SHELL

40
ARCHIVIAZIONE DEI FILE: TAR

 Il comando tar è stato creato originariamente per


archiviare file e directory su nastro (tar infatti sta per
Tape ARchive cioè archivio su nastro) ma in realtà con
tale comando e possibile creare degli archivi su qualsiasi
dispositivo. Ecco perché ancora oggi è molto usato
anche su dispositivi diversi dai nastri.
 Con il comando tar è possibile creare degli archivi che
contengono file ma anche intere directory. È possibile
modificare un archivio creato con il comando tar
aggiungendo nuovi file o eliminandone alcuni già
presenti. Il comando tar perciò è molto utile per
effettuare dei backup.
 Un archivio creato con il comando tar ha solitamente
come estensione '.tar' ma in realtà si tratta di una
convenzione che non è affatto obbligatoria.
41
ARCHIVIAZIONE DEI FILE: TAR

 La sintassi del comando tar è: tar opzioni


nomearchivio.tar file e/o directory. Il
comando:
tar ­cf mioarchivio.tar mydir 
 crea un archivio chiamato mioarchivio.tar
aggiungendo all'interno tutti i file presenti
sotto la directory mydir. Per estrarre tutti i
file e le directory contenute nell'archivio
mioarchivio.tar occorre usare lo stesso
comando tar ma con le opzioni di estrazione:
tar ­xf mioarchivio.tar 
42
ARCHIVIAZIONE DEI FILE: TAR

 Il comando tar non esegue alcuna compressione


sui file aggiunti nell'archivio, tuttavia è possibile
creare un archivio contenente file e directory e
comprimerlo in modo da occupare meno spazio.
Per far ciò occorre usare l'opzione z. L'opzione z
chiama il comando gzip che effettua la
compressione dei file:
tar ­czf mioarchivio.tar.gz mydir 
 Il file così creato verrà chiamato mioarchivio.tar.gz.
Saranno cioè presenti 2 estensioni: .tar e .gz. Un
file con estensione .gz è un file compresso e lo si
può decomprimere usando il comando gzip.
43
ARCHIVIAZIONE DEI FILE: TAR

 Per estrarre i file e le directory contenute nel file


mioarchivio.tar.gz occorre prima decomprimere
l'archivio con il comando gzip e successivamente
estrarre i file dall'archivio con il comando tar.
 Per decomprimere un file compresso si può usare il
comando gzip con l'opzione ­d oppure si può usare il
comando gunzip.
 Nell'esempio precedente, per ripristinare i file
originari si dovranno eseguire i seguenti comandi:
gzip ­d mioarchivio.tar.gz 
(oppure gunzip mioarchivio.tar.gz)
 e successivamente:
tar ­xf mioarchivio.tar 
44
RICERCA FILE

 Per ricercare un file si utilizza il comando find


 Ad esempio il comando
find . ­name nomefile ­print 
 ricerca il file nomefile a partire dalla directory corrente
(.) in tutte le sottodirectory e stampa sul display tutti i
risultati

 Si possono usare i caratteri jolly. Ad esempio il comando


find . ­name "*.txt" ­print 
 ricerca tutti i file con estensione .txt file nomefile a
partire dalla directory corrente (.) in tutte le
sottodirectory e stampa sul display tutti i risultati
45
SCORCIATOIE PER LA SHELL
 !! riesegue l'ultimo comando appena eseguito
 !n riesegue l'ennesimo comando presente nella storia, dove 'n' è il numero del
comando da rieseguire
 !stringa riesegue l'ultimo comando che inizia con i caratteri specificati in 'stringa'
 !stringa:p visualizza l'ultimo comando che inizia con i caratteri specificati in 'stringa'
 !?comando? ricerca il comando specificato tra punti interrogativi
 fc 4 permette di modificare in comando numero 4 con l'editor predefinito
 fc -e 'nome' 4 permette di modificare in comando numero 4 con l'editor specificato
 ^comando1^comando2 riesegue l'ultimo comando eseguito che contiene la parola
'comando1' sostituendola con 'comando2'.
 history visualizza l'elenco di tutti i comandi eseguiti
 tasto TAB espande il nome di un file o di un comando
 Alt Gr + ì permette di inserire un simbolo di Tilde (~) N.B. (il pulsante della tastiera da
premere è la i accentata)
 Alt Gr + ' permette di inserire un apice inverso (`)
46
ALIAS

 Digitare frequentemente dei comandi complessi contenenti


numerose opzioni può essere alla lunga fastidioso, perciò può
esser conveniente utilizzare dei sinonimi più facili da ricordare e
da digitare. Prendiamo ad esempio il comando:
mount ­t vfat /dev/sda1 /mnt/mydir 
 questo comando 'monta' la prima partizione presente sul terzo
disco alla directory /mnt/mydir, specificando la tipologia del
filesystem (vfat). Supponiamo che tale partizione contenga i file
di Windows: sarebbe interessante poter sostituire tale comando
con il comando 'montaWindows'. Bene, è effettivamente possibile
fare ciò creando l'alias montaWindows per tale comando. Per
creare l'alias 'montaWindows' occorre usare il comando alias:
alias montaWindows='mount ­t vfat /dev/sda1 /mnt/mydir' 
 questo comando non fa altro che creare il sinomimo
montaWindows. Una volta eseguito questo comando, sarà
possibile usare il sinonimo creato: lanciando montaWindows verrà
eseguito il comando 'mount ­t vfat /dev/sda1 /mnt/mydir'.
47
ALIAS

Un alias può essere utile anche per modificare il comportamento


predefinito di alcuni comandi.
Ad esempio, il comando rm cancella i file irreversibilmente senza
chiedere conferma, a meno che non venga usata l'opzione -i.
Possiamo creare un alias di rm che includa tale opzione:

alias rm='rm -i'

da questo momento, digitando il comando rm il sistema chiederà


conferma prima di cancellare qualsiasi file. Per eliminare un alias è
possibile usare il comando :
unalias rm

dove rm è il nome dell'alias.


48
CARATTERI SPECIALI
 I caratteri '*', '?' vengono definiti anche caratteri jolly
o anche wildcards. Si tratta di caratteri che vengono
usati dalla shell per espandere il nome di un file.
 Il carattere '*' significa qualsiasi carattere o qualsiasi
sequenza di caratteri.
 Digitando una serie di caratteri e terminando la serie
con il carattere *, la shell individuerà tutti i file
all'interno della directory corrente i cui nomi iniziano
con la serie di caratteri digitati e terminano con una
sequenza qualsiasi di caratteri.
 Digitando solo il carattere *, la shell individuerà
semplicemente tutti i file all'interno della directory
corrente.

49
CARATTERI SPECIALI

 Ad esempio, supponiamo che l'utente lau


possegga all'interno della directory
documenti i file lettera1, lettera2, doc,
letteratura.txt, lettere e doc2. Il comando:
 ls lett* 
 visualizzerà solo i file lettera1, lettera2,

lettere e letteratura.txt. i file doc1 e doc2


non verranno visualizzati.
 Ciò perché la shell considererà tutti i file
presenti all'interno della directory che
iniziano con i caratteri 'lett' e terminano con
una sequenza qualsiasi di caratteri.
50
CARATTERI SPECIALI

 Supponiamo ora che di tutti i file presenti nella directory


volessimo visualizzare solamente i file lettera1 e lettera2
 In questo caso scrivendo lettera* visualizzeremmo i file
lettera1, lettera2 ma anche letteratura.txt. Come fare
allora? Potremmo usare il carattere '?'. Infatti il carattere ?
significa qualsiasi carattere.
 Nel nostro esempio pertanto potremmo scrivere il
comando:
ls lettera?
 La shell interpreterà la stringa 'lettera?' cercando
all'interno della directory corrente tutti i file il cui nome
inizia per 'lettera' e termina con 1 carattere qualsiasi.
 La differenza tra il carattere * ed il carattere ? sta nel fatto
che mentre con il primo si intende qualsiasi sequenza di
caratteri, con il secondo si intende qualsiasi carattere.
51
QUOTING

 Un compito molto importante delle shell Unix è quello


di rimpiazzare variabili e simboli speciali con quello
che rappresentano.
 A fianco di questo problema, si pone la necessità di
proteggere ciò che si vuole evitare sia espanso dalla
shell.
 Anche questi simboli che proteggono contro
l'espansione sono soggetti a loro volta ad un
procedimento di sostituzione: quando la shell ha
terminato l'interpretazione di una istruzione, questi
devono essere rimossi in modo da non lasciare tracce
per un eventuale programma che dovesse ricevere
questi dati in forma di argomenti.
52
QUOTING

 Con il termine quoting si vuole fare riferimento


all'azione di racchiudere parti di testo all'interno di
delimitatori (virgolette o apici) per evitare confusione
nei comandi, o per poter utilizzare un simbolo che
altrimenti avrebbe un significato speciale.
 Il metodo del quoting viene quindi usato per togliere il
significato speciale che può avere un carattere o una
parola per la shell.
 Ci sono tre meccanismi di quoting:
 il carattere di escape (rappresentato dalla barra rovescia),
 gli apici semplici
 gli apici doppi (o virgolette).
53
QUOTING
 Il metodo utilizzato più comunemente per
"neutralizzare" i caratteri speciali consiste nel
racchiudere la stringa che li contiene tra apici
doppi. Ad esempio, lo spazio è un carattere
problematico nei nomi delle cartelle e quando si
vuole accedere a una cartella il cui nome
contiene degli spazi, occorre mettere il nome
della cartella tra apici doppi.
 Esempio: cd  la  mia  cartella restituisce errore,
mentre
 cd  "la  mia  cartella" ci permette di
raggiungere la cartella desiderata.
 Non sempre le virgolette risolvono il problema.
54
QUOTING

 Ad esempio provando a scrivere echo  "$PATH",


invece di echo  $PATH (senza virgolette), ci si
aspetta di avere due risultati diversi, invece il
risultato è lo stesso.
 Se si volesse stampare la stringa $PATH è
necessario effettuare un ulteriore escape del
carattere speciale $ e scrivere quindi echo  "\
$PATH", un pò come succede nel linguaggio C.
 In generale il backslash effettua l’escape di un
singolo carattere speciale, quindi nell’esempio
precedente avremmo potuto scrivere anche
cd la\ mia\ cartella
55
QUOTING: COMMAND SUBSTITUTION

● A volte può essere necessario utilizzare l’output di un comando come input per
altri comandi

● In questo caso può essere utile la command substitution che permette di istruire
la shell a interpretare una stringa come fosse un comando, ad eseguirlo e ad
utilizzarne il risultato

● La command substition si effettua racchiudendo la stringa tra ` ` (Alt Gr + ')

● Esempio: supponiamo di voler creare una cartella con il nome "backup


data_odierna"; per ottenere la data in questione automaticamente possiamo
utilizzare il comando: mkdir "backup `date `" (il nome della cartella è tra
virgolette perché abbiamo inserito uno spazio tra la parola backup e la data)

● La command substitution è spesso utilizzata negli script che compiono azioni


automatiche che richiedono parametri (ad esempio per un backup periodico
automatico che richiede di volta in volta una data diversa)
56
QUOTING: RIEPILOGO

 Se si desidera che caratteri speciali vengano


riconosciuti come parte di stringhe, è
necessario utilizzare le virgolette per
racchiudere l’intera stringa.
 Se si desidera effettuare l’escape di un
singolo carattere si può utilizzare il \ (ad
esempio il simbolo $ lo richiede
obbligatoriamente)
 Se si desidera interpretare una stringa come
comando allora la stringa va racchiusa tra
apici singoli (Alt Gr + '): `stringa`
57
ALTRI COMANDI

58
ALTRI COMANDI UTILI

 whoami: stampa il nome utente dell’utente corrente


 df: calcola lo spazio disponibile di tutte le periferiche di
memorizzazione montate sul file system
 du: visualizza informazioni sull'utilizzo del disco
 fdisk: partiziona un disco fisso
 fsck: controlla e ripara un file system danneggiato
 sync: scrive i dati contenuti nei buffer in ram

59
ALTRI COMANDI UTILI

killall: come kill ma si può specificare un nome al posto del PID


date: senza argomenti visualizza la data corrente; può inoltre essere utilizzato
per la modifica della data e dell'ora del sistema
free: visualizza informazioni sulla memoria di sistema (RAM e SWAP)
whereis: visualizza la locazione dell'eseguibile, passatogli come argomento.
adduser: Crea un nuovo profilo utente
halt: Arresta il sistema
ifconfig: Permette di configurare le interfacce di rete
shutdown: Esegue un reboot (opzione -r) o uno spegnimento (-h) del sistema dopo
un determinato tempo

60
FINE

61

Potrebbero piacerti anche