Sei sulla pagina 1di 19

CAPITOLO 2

ESPLORAZIONE DEL FILE SYSTEM DI UNIX


Sezione A Introduzione a file e directory
In UNIX un file la componente di base per la memorizzazione di dati. UNIX considera
file qualsiasi cosa, persino le periferiche collegate al computer come il monitor, la
tastiera o la stampante.
Esistono tre tipi di file in UNIX: File ordinari, Directory, e File speciali.
Il file system una parte del sistema operativo, che si occupa della gestione ad alto
livello di file e directory allinterno della memoria di massa. un dispositivo di
archiviazione, potremmo anche dire che il modo in cui UNIX organizza i file sui
dispositivi di memorizzazione di massa come gli hard disk.
In UNIX, i file sono organizzati in una struttura gerarchica simile a un albero in cui i file
di livello superiore contengono gli altri file, che a loro volta ne contengono altri e cos
via.
INTRODUZIONE ALLA STRUTTRA AD ALBERO STANDARD
Comunemente, in un elaboratore linformazione memorizzata in modo permanente
nei dischi fissi, ogni disco fisso pu essere diviso in partizioni e ogni partizione pu
contenere un filesystem con una propria
top level directory.
Sorge quindi il problema di come permettere agli utenti di accedere ai vari filesystem
contenuti nelle differenti partizioni:
La prima possibilit consiste nellavere root directory distinte (ad esempio in
Windows abbiamo: C:\, D:\ ecc.), una per ogni partizione. Quindi per riferirsi a un
file, bisogna usare un pathname che parte dalla directory root giusta.
UNIX/Linux invece fa in modo che i diversi filesystem vengano combinati in
ununica struttura gerarchica, montando la top level directory di una
partizione come foglia del filesystem di unaltra partizione.
La struttura ad albero del file system di UNIX parte al livello radice: root il nome del
file a questo livello di base ed indicato dal carattere della barra trasversale (/).
La barra trasversale rappresenta quindi la directory root.
Una directory un particolare tipo di file che pu contenere altri file e directory: i file
normali memorizzano informazioni, mentre i file di directory memorizzano i nomi dei
file normali e quelli di altre directory, che prendono il nome di sottodirectory;
considerate le figlie della directory genitore perch sono create allinterno di
questultima.
Allinterno della directory root, vi sono (tra le altre) le directory dev, bin e home.
- dev sta per directory device, sono i file che rappresentano i dispositivi, ossia
puntatori che puntano ai dispositivi di input e output (a differenza di Windows in
cui i dispositivi si riconoscono tramite una lettera).
In questa directory sono contenuti i file speciali, con questo nome tutti i
dispositivi fisici e logici di I/O ( unit a disco, memoria centrale , terminali video ,
stampanti , ecc). Poich questi dispositivi sono trattati dal sistema operativo
come file normali, tutte le operazioni di I/O all'hardware seguono regole
analoghe a quelle trattate nella scrittura di un file.
Alcuni file speciali contenuti nella directory dev sono, per esempio hda e ttyS0.

Il primo indica il dispositivo per il controllo della periferica, hard disk sul
controller a;
mentre il secondo controlla il terminale.
bin la directory che contiene i programmi principali eseguibili.
home la home directory degli utenti.
b
d
i
e
n
h
tv
o
c
m
li
e
p
b
tr
u
m
o
s
p
c
r

j
s
tr
e os
jic
a uos
o
in ruo
s
a cru
Xe ecr
b
3 p ec
e
e
i8 h
e
m
n
6
tg+
ia
+c
x
li
n
incl
lcl
b
b
ude e
o
u ie
m
c
d n
li
t
a
a
m
e
b
c
c
sla
s
li
s
p
n
tro n
m
c
o u
p
l x

Nella figura precedente, la root directory (/) il genitore di tutte le arte directory.
Mentre la directory home, per esempio, il genitore delle sottodirectory jean, tricia e
joseph.

Visto che, genitore di tutte le directory, la directory root, se in C si dovr


inserire lindirizzo di un file su cui scrivere, tale indirizzo inizier con il carattere
/.

USO DELLE PARTIZIONI DI UNIX


La sezione del disco che contiene un file system prende il nome di partizione: un
disco pu avere diverse partizioni, ognuna delle quali separata dalle altre in modo
che non venga influenzata da disturbi esterni come problemi strutturali associati con
unaltra partizione.
Quando si installa UNIX su un computer, uno dei primi compiti decidere come
partizionare lhard disk.
Le partizioni di UNIX sono identificate con nomi quali hda1 e hda2, dove le prime
due lettere indicano a UNIX il tipo di periferica, per esempio hd per hard disk,
mentre la terza lettera, per esempioa, indica se il disco primario o secondario
(a=primario, b=secondario). Le partizioni di un disco sono numerate a partire da 1. Il
nome hda1 indica a UNIX che si tratta della prima partizione del disco, mentre
hda2 indica la seconda partizione dello stesso disco. Se si ha un secondo hard disk
con due partizioni, queste saranno identificate come hdb1 e hdb2.
I dispositivi di memorizzazione per computer come gli hard disk prendono il nome di
periferiche, le quali si collegano al computer tramite interfacce elettroniche.

Il file system di UNIX un file system virtuale, il che significa che si pu accedere a
tutte le partizioni una volta che sono state montate nella struttura ad albero.
Impostazione delle partizioni del file system
Il partizionamento dei file system isola e protegge ogni singolo file system, perci se
uno di essi si guasta, si pu lavorare con un altro.
Si dovrebbero usare almeno tre partizioni separate per i file system: root, swap e/ usr.
La dimensione delle partizioni viene misurata in megabyte (MB, ossia un milione di
caratteri).
Le partizioni grandi hanno maggiori probabilit di essere danneggiate rispetto a quelle
di dimensioni minori: la partizione root dovrebbe essere ridotta per evitare la
corruzione dei file. Un file system root danneggiato rende il sistema non avviabile.
Dopo la partizione root, si imposta la partizione swap, che agisce come estensione
della memoria in modo che UNIX abbia pi spazio per lesecuzione di programmi di
grandi dimensioni.
Infine, la partizione /usr contiene tutti i programmi del sistema operativo non relativi al
kernel che rendono utile il computer, tra i quali vi sono i pacchetti per lo sviluppo di
software che permettono di programmare, i programmi di rete, quelli per laccesso a
Internet, le interfacce grafiche e il grande numero di utility UNIX (programmi che
svolgono operazioni utili come la copia di file, lelencazione di directory e la
comunicazione con gli altri utenti). La partizione /usr dovrebbe essere la pi grande
delle tre partizioni.
Oltre a queste tre partizioni separate, si pu creare una partizione /home destinata alla
home directory di tutte le directory degli utenti. Una partizione home separata
protegge e isola i file personali degli utenti dal software del sistema operativo UNIX.
La partizione /usr
La partizione /usr una grande partizione che memorizza la maggior parte dei file e
dei programmi del sistema operativo.
Anche gli strumenti per lo sviluppo di software, come i compilatori, le librerie condivise
e i file di intestazione necessari per la creazione di programmi vengono memorizzati in
una gerarchia di sottodirectory che parte da /usr.
La partizione /home
La partizione /home larea di memorizzazione del lavoro di tutti gli utenti. Se la
partizione /root (o qualunque altra partizione) viene danneggiata, la presenza di una
partizione /home garantisce che le informazioni degli utenti non saranno perse.
Sebbene si possano avere delle limitazioni alla lettura di informazioni presenti in altre
partizioni, si pu accedere alla maggior parte dei file presenti nella propria home
directory.
La dimensione della partizione destinata alla home directory di tutti gli utenti di un
sistema dipende dal numero di utenti che il sistema deve accogliere. Lo spazio allocato
pu dipendere anche da quanti dati ogni utente ha bisogno di memorizzare.
La partizione di swap
Le partizioni swap consentono di avere una memoria virtuale, ossia una risorsa di
memoria aggiuntiva ottenuta utilizzando parte dello spazio del disco come
unestensione della memoria (RAM).
USO DEL COMANDO MOUNT

UNIX utilizza il comando mount per collegare le partizioni del file system alla
struttura delle directory allavvio del sistema.
Per poter utilizzare un filesystem in un sistema UNIX, necessario che questa venga
agganciato al directory tree, ovvero venga visto come una directory allinterno
dellalbero delle directory.
Si parla quindi di montaggio del filesystem.
Questa operazione informa il sistema operativo della presenza del filesystem
considerato, associandolo ad una directory allinterno della struttura logica che
rappresenta il mount-point (punto di montaggio) del filesystem.
La sintassi del comando mount la seguente:
Sintassi
Analisi

mount [option] [device] [dir]

Il comando

option sono ovviamente le opzioni di funzionamento del comando


mount
device il file di dispositivo contenente il filesystem da montare
dir il mount-point (directory) nel quale montare il filesystem
contenuto nel file di dispositivo indicato da device

mount senza argomenti, invece, elenca i filesystem in uso nel sistema.

Per garantire la sicurezza del sistema, solo lutente root, in genere lamministratore di
sistema, pu usare il comando mount. Gli utenti normali possono invece utilizzare
diversi pacchetti software per montare e smontare i file system, in particolare dischetti
e CD-ROM.
Il CD-ROM uno dei dispositivi necessari pi di frequente, pertanto lo si deve montare.
Supponiamo che si desideri accedere ai file di un CD: lamministratore di sistema
monta il CD-ROM inserendo un disco nellunit e immettendo il comando seguente:

mount -t iso9660 -r /dev /cdrom /mnt /cdrom


Questo comando monta il CD su un dispositivo chiamato cdrom situate nella
directory /dev.
Il punto di mount effettivo in UNIX mount/cdrom, una directory che fa
riferimento al dispositivo CD-ROM.
Quando il CD montato, si pu accedere ai suoi file attraverso la directory
/mnt/cdrom.
UNIX supporta diversi tipi di file system, che vengono specificati con lopzione t.
I CD-ROM sono classificati come dispositivi iso9660, pertanto lamministratore di
sistema digita t seguito dallargomento iso9660.
Lopzione r indica che il dispositivo CD-ROM di sola lettura.
Quando laccesso ai file system montati manualmente non pi necessario,
lamministratore di sistema lo smonta con il comando umount prima di rimuovere il
supporto di memorizzazione.
Ad esempio:

umount /mnt/cdrom
CONTROLLO DELLO SPAZIO SI DISCO

Il comando df
Per visualizzare un prospetto della quantit di spazio su disco libero e usato dai singoli
file system del sistema, si utilizza il comando df (disk free).
Lo spazio rappresentato in termini di blocchi del disco (un blocco equivale a 512 MB)
e inode.
La sintassi del comando la seguente:
Sintassi
df [option] [--] [file]
Analisi

Ad esempio:
1. user>

option sono le opzioni del comando, tra queste vi sono:


il doppio trattino (facoltativo) indica che i parametri successivi
non sono da considerarsi opzioni.
il parametro facoltativo file indica il nome di un file nel filesystem
di cui si vogliono visualizzare le informazioni.
Se non specificato, sono visualizzate le informazioni relative ai
filesystem correntemente montati.

df

(/dev/dsk/ c0t0d0s0 ) :
2231020 blocks
/proc
(/proc
):
blocks
/opt
(/dev/dsk/ c0t0d0s3 ) :
2486076 blocks
/usr/local (/dev/dsk/ c0t0d0s7 ) :
4067088 blocks
/
(apphost : /opt/solaris2) :
opt/salari 1995968 blocks
s2

304297 files
0

11692 files
325130 files
430227 files
286013 files

Nellesempio considerato:
- il primo campo contiene il nome del filesystem
- il secondo il device corrispondente (eventualmente virtuale)
- il terzo il numero di blocchi occupati
- il quarto il numero di inode
Il comando du
Questo comando (disk usage) fornisce informazioni sullo spazio occupato da una
directory e da tutte le sue sottodirectory, misurato in blocchi.
La sua sintassi :
Sintassi
du
Analisi

[opzioni] [arg]
[opzioni] sono ovviamente le opzioni del comando.
Ad esempio a, mostra lo spazio occupato anche dai file che si
incontrano, e non solo dalle eventuali sottodirectory.
Ve ne sono altre utilizzate per cambiare lunit di misura dello
spazio su disco:
Visualizza lo spazio occupato in byte
-b
Visualizza lo spazio occupato in kilobyte
-k


Ad esempio:
1. user>

8
1688
4
16
14
1734
2

-m

Visualizza lo spazio occupato in megabyte

[arg] se non viene specificato il nome di una particolare directory,


il comando du prende come argomento la directory corrente.

du LABORATORIO_SO
LABORATORIO_SO/LABSO/CVS
LABORATORIO_SO/LABSO
LABORATORIO_SO/scriptColonne
LABORATORIO_SO/linguaggio_c
LABORATORIO_SO

MONITORAGGIO DELLA MEMORIA


Il comando top fornisce informazioni sulla memoria utilizzata dai processi attivi
(processi che in quel momento usano la CPU), queste informazioni vengono aggiornate
ad intervalli di qualche secondo.
La sintassi del comando la seguente:
Sintassi
top [opzioni]

Analisi

[opzioni] sono ovviamente le opzioni del comando.

In questo modo verr visualizzata unintera schermata contenente i processi elencati


secondo la quantit di CPU utilizzata.
Ad esempio:
1. user>

top
load averages: 0.68, 0.39, 0.27
14 :
34 : 55
245 processes: 235 sleeping, 9 zombie, 1 on cpu
CPU states: 91.9% idle, 5.8% user, 2.4% kernel, 0.0%
iodai, 0.0% swap
Memory: 768M real, 17M free, 937M swap in use, 759M swap
free
PID USERN
AME
128 root
87
421 lenisa
0
924 root
1
243 pietro

TH P NI SIZE
R RI CE
1 5
0 65M
9
1 4
0 285
8
6K
1 5
0 35M
9
4 4
0 28M

RES STA
TE
56M slee
p
231 cpu
2K
S6M slee
p
25M slee

TIME CPU COMM


AND
105: 3.7 Xsun
00 1%
0:00 1.5 top
0%
15:5 1.4 Xsun
8 7%
16:3 0.7 opera

89

4%

Nellesempio precedente:
- la prima riga indica il carico del sistema rispettivamente nellultimo minuto,
negli ultimo 5 minuti, negli ultimi 15 minuti. Il carico espresso come numero di
processori necessari per far girare tutti i processi a velocit massima. Alla fine
della riga c lora.
- La seconda contiene il numero e lo stato dei processi del sistema.
- La terza. Lutilizzo della CPU.
- La quarta contiene informazioni sulla memoria.
- Le restanti righe contengono informazioni sui processi (THR=thred,
RES=resident)
PERCORSI
Abbiamo visto che tutti i file UNIX sono memorizzati in directory dei file system, a
partire dalla root directory. Per specificare un file o una directory, si utilizza il suo
nome di percorso (pathname), che segue i rami del file system e del file desiderato.
Una barra trasversale (/) separa i nomi delle directory.
Quindi tutti i file possono essere individuati con un percorso corretto ed unico, ossia un
elenco dei nomi delle directory che portano ad un file particolare.
Un percorso assoluto inizia sempre a livello della root directory, mentre un percorso
relativo parte dalla directory corrente.
Ad esempio, se si desidera specificare la posizione del file phones.502, sapendo
che si trova nella directory source della home directory di jean, allora si
scriver /home/jean/source/phones.502.
Mentre, supponendo di trovarci nella directory / home/jean, il pathname sar
source/phones.502.
Uso del prompt della linea di comando
Il prompt dei comandi di UNIX pu indicare la posizione corrente nel file system.
Per esempio, il prompt [jean@eli jean]$ probabilmente il prompt predefinito
generato dallamministratore di sistema al momento della creazione dellaccount. Il
prompt [jean@eli jean]$ significa che jean lutente che sta lavorando sul
computer host chiamato eli nella sua home directory, che porta il suo nome utente
jean. In altre parole, jean su eli nella sua home directory.
Quando Jean cambia posizione per passare a home/jean/source, il suo prompt sar il
seguente

[jean@eli source]$
Personalizzazione del prompt
Il prompt viene configurato automaticamente allaccesso.
Una variabile di ambiente, PS1, contiene dei caratteri speciali di formattazione che
determinano la formattazione del prompt.
Per visualizzare il contenuto della variabile di ambiente PS1:
1. Si digita echo $PS1 e s preme Invio
2. Apparir il contenuto della variabile PS1, che potrebbe essere simile al
seguente:

[ \u@\h \W] \$

I caratteri che iniziano con \ sono caratteri speciali di formattazione della shell Bash:
\u visualizza il nome dellutente, \h visualizza il nome dellhost del sistema, mentre
\W visualizza il nome della directory di lavoro. Il carattere \$ visualizza un # o un $,
in relazione al tipo di utente connesso.
Le parentesi quadre, [ e ], e lo spazio che separa \h e \W non sono caratteri speciali,
quindi vengono visualizzati cos come appaiono.
Quando Jean connessa al sistema eli e lavora nella sua home directory, il suo prompt
sar [jean@eli jean]$ secondo il formato mostrato sopra.
Altri caratteri di formattazione per la configurazione del prompt della shell Bash sono:
Caratteri di
Scopo
formattazione
\d
Visualizza la data
\h
Visualizza il nome dellhost
\n
Visualizza una nuova riga
\nnn
Visualizza il carattere ASCII che corrisponde al numero ottale
nnn
\s
Visualizza il nome della shell
\t
Visualizza lora
\u
Visualizza il nome dellutente
\w
Visualizza il percorso della directory di lavoro
\W
Visualizza il nome della directory di lavoro senza informazioni
di percorso
\!
Visualizza il numero del comando corrente nella cronologia
dei comandi
\#
Visualizza il numero del comando nella sessione corrente
\$
Visualizza il simbolo # selutente root, altrimenti visualizza
un simbolo $
\[
Contrassegna linizio di una sequenza di caratteri non
stampabili, come una sequenza di controllo
\]
Contrassegna la fine di una sequenza di caratteri non
stampabili
\\
Visualizza il carattere \
Configurazione del prompt della shell Bash:
1. Per modificare il prompt in modo che visualizzi la data e lora, digitare PS1
\d\t> e premere Invio. Digitare il comando senza spazi tra i caratteri.
Il prompt a questo punto assomiglier al seguente:

mar lug 5 09 : 18 : 33>


2. Per cambiare il prompt in modo che visualizzi la directory di lavoro corrente,
digitare
PS1 = \w> e premere Invio. Il prompt sar il comando seguente:

>
Il carattere di formattazione \w visualizza il segno
per
rappresentare la home directory dellutente.
Per cambiare il prompt in modo che visualizzi il percorso completo della
directory di lavoro, si deve usare unaltra variabile di ambiente, PWD, che
contiene il nome di percorso completo della directory di lavoro corrente.
3. Per visualizzare la variabile PWD nel prompt, digitare PS1 = $PWD> e
premere Invio (osserviamo che si deve anteporre il segno $ alla variabile di

ambiente per estrarne il contenuto). Il prompt apparir cos:

/home/jean>
4. Disconnettersi dal sistema ed accedere nuovamente per reimpostare il prompt
alla suo configurazione predefinita.
Il comando pwd
Si pu usare il comando UNIX pwd per visualizzare il percorso corrente, infatti pwd
labbreviazione di present working directory, ossia stampa la directory di lavoro.
Visualizzazione del percorso corrente:
1. Al prompt dei comandi $ digitare pwd e premere Invio.
Il sistema visualizza il percorso della directory di lavoro corrente.
SPOSTAMENTO NEL FILE SYSTEM
Per spostarsi nella struttura delle directory di UNIX, si utilizza il comando
directory), che ha la seguente sintassi:

cd (change

Sintassi

cd directory

Analisi

Directory il nome della directory nella quale ci su vuole spostare.


Il nome della directory espresso come percorso alla destinazione, con
barre trasversali che separano i nomi delle sottodirectory.

Quando si accede al sistema, si lavora nella propria home directory, che si trova sotto
la directory /home.
Quando si cambia directory e si desidera poi tornare nella home directory, si deve
digitare cd e premere Invio (quindi cd senza argomenti sposta lutente nella sua
home directory).
UNIX utilizza anche il carattere tilde
per indicare la home directory
dellutente.
Si utilizza inoltre il comando cd . . per spostarsi nella directory madre,
mentre il comando cd . indica la directory corrente.
Illustriamo un esempio che mostra lutilizzo di

pwd e cd:

pwd
/home/bianchi
cd . /progetto
pwd
/home/bianchi/progetto
Notiamo che punto (.) e punto punto (. .) sono alias rispettivamente per la
directory corrente e per la directory madre.
Elencazione del contenuto delle directory
Il comando ls (list)visualizza i nomi dei file e delle directory contenuti in una directory.
I file contenuti appaiono con colori diversificati a seconda che siano directory, file
normali o file compressi.
possibile fornire un argomento a ls, in modo da elencare un file specifico o
visualizzare il contenuto di una particolare directory.

Elencazione di un file o una directory specifici:


1. Se non ci si trova nella propria home directory, digitare cd e premere Invio.
2. Supponiamo di aver usato il comando cat per creare un file di nome note, che
si trova nella home directory. Allora digitando note e premendo Invio, il
sistema visualizza un elenco dei contenuti del file note.
3. Per visualizzare il contenuto di una directory diversa da quella di lavoro
corrente, si deve fornire il nome della directory come opzione del comando ls.
Per esempio, per vedere il contenuto della directory /var, digitare ls /var e
premere Invio.
Apparir un elenco simile a questo:

catman db li bloacl lock log nis preserve run spool tmp


yp
Si possono usare anche delle opzioni per visualizzare informazioni specifiche o
maggiori informazioni rispetto a quelle fornite dal comando da solo.
Lopzione l del comando ls, genera un elencazione lunga che include informazioni
complete su ogni file, questa visualizzazione spesso prende il nome di listato lungo
(long listing format).
Supponendo di voler visualizzare un elenco lungo delle directory /etc e /home del
sistema, digiteremo nel primo caso ls l /etc e premeremo Invio, mentre nel secondo
digiteremo ls l / e premeremo Invio.
In generale, il comando ls l fornisce maggiori informazioni su ogni elemento del
listato rispetto ad un semplice comando ls.
Osserviamo le informazioni restituite da tale comando:
Tipo di file e autorizzazioni di accesso
la prima colonna di informazioni mostrata , ad esempio, il seguente set di
caratteri:

drwxr -xr -x

il primo carattere dellelenco, d, indica che il file in realt una directory.


Se invece avessimo avuto un file ordinario, sarebbe apparso il trattino (-) al
posto della d, nel caso di link avremmo avuto l, b per block device (ossia file
che rappresentano una periferica con interfaccia a blocchi.), c per character
device (file che identificano una periferica con accesso a caratteri).
I caratteri restanti indicano le autorizzazioni di accesso.
Numero di collegamenti
La seconda colonna riporta il numero di file che sono collegati simbolicamente a
questo file.
Se il file una directory, come in questo caso, questo il numero di
sottodirectory contenute (una directory contiene sempre almeno due
sottodirectory, punto e punto punto).
Proprietario
La terza colonna indica il proprietario del file, in questo caso lutente root.
Gruppo
La quarta colonna riporta il gruppo proprietario del file, che in questo caso il
gruppo root.
Dimensione

La quinta colonna mostra la dimensione del file in byte.


Data e ora
La sesta e la settima colonna mostrano la data e lora della creazione o
dellultima modifica del file.
Nome
Lottava colonna contiene il nome del file

Si pu utilizzare anche lopzione a (all) con il comando ls per elencare i file


nascosti, quelli il cui nome inizia con un punto. Il sistema operativo in genere utilizza
file nascosti per memorizzare informazioni di configurazione e per altri scopi.
Altre opzioni per il comando ls sono:
Visualizza il listato lungo della directory visualizzando anche i file nascosti
-al
Visualizza tutte le directory
-a*
Visualizza i file in ordine invertito
-r
Elenca ricorsivamente anche il contenuto di eventuali sottodirectory
-R
incontrate
Visualizza i file per dimensione partendo dal pi grande
-S
Ordina lelenco per data e ora dellultima modifica anzich alfabeticamente
-t
Uso dei metacaratteri
Un metacarattere un carattere speciale che pu essere utilizzato al posto di
qualunque altro carattere o di un gruppo di caratteri. I metacaratteri sono utili quando
si desidera lavorare con diversi file dal nome simile o con un file del quale non si riesce
a ricordare il nome esatto.
Quando lutente invia un comando, la shell lo scandisce alla ricerca di eventuali
metacaratteri, che processa in modo speciale. Una volta processati tutti i
metacaratteri viene eseguito il comando.
I seguenti metacaratteri, chiamati wildcard, vengono usati per abbreviare il nome di
un file in un pathname:
Metacaratter
e

*
?
[]
{}
[a-z]
[!a]

Significato
Stringa di 0 o pi caratteri
Singolo carattere
Singolo carattere tra quelli elencati
Stringa tra quelle elencate
Indica qualsiasi carattere compreso tra a e z inclusi
Indica qualsiasi carattere diverso da a

Il metacarattere * rappresenta qualunque gruppo di caratteri in un nome di file, quindi


allinterno di un pathname non altro che unabbreviazione per un nome di file.
1. Supponiamo ad esempio che in una home directory vi siano otto file:

friends
instructions.txt
list1

list2
list2b
memo_to_fred
memo_to_jill
minutes.txt
notes
2. Se si immette il comando
output:

ls *.txt e si preme Invio, si otterr il seguente

instructions.txt minutes.txt
Largomento *.txt provoca la visualizzazione dei nomi di tutti i file che
terminano con .txt .

ls memo*, si otterr il risultato seguente:


memo_to_fred memo_to_jill

3. Se invece si immette

4. Se invece si inserisse il comando ls *s e si premesse Invio, il comando


visualizzerebbe tutti i file che terminano con s:

friends notes
1. user cp /JAVA/Area*. java /JAVA_backup
Copia dalla directory JAVA tutti i files il cui nome inizia con la stringa Area e
termina con lestensione .java, nella directory JAVA_Backup
Il metacarattere

? prende il posto di un singolo carattere.

5. Digitando ls list? E premendo Invio, ls visualizzerebbe i nomi che iniziano


con list e terminano con un singolo carattere:

list1 list2
osserviamo che non verrebbe elencato il file list2b, perch i caratteri che
seguono la parola list nel suo nome sono due.
1.

user> ls /dev/tty?
Mi fa vedere tutti i device tty+un solo carattere

2.

user> ls /dev/tty?[234]
Restituisce la lista dei file in /dev

che si chiamano tty+un carattere

qualsiasi+un carattere tra 2, 3, 4


La risposta a tale comando potrebbe essere:

/dev/ttyp2 /dev/ttyp4 /dev/ttyq3 /dev/ttyr2 /dev/ttyr4


/dev/ttyp3 /dev/ttyq2 /dev/ttyq4 /dev/ttyr3
3.

user> ls /dev/tty?[2-4]
In questo caso il risultato analogo al punto precedente:

/dev/ttyp2 /dev/ttyp4 /dev/ttyq3 /dev/ttyr2 /dev/ttyr4


/dev/ttyp3 /dev/ttyq2 /dev/ttyq4 /dev/ttyr3

4.

user> mkdir /user/studenti/rossi/{bin, doc, lib}


Con questo comando creo le directory bin, doc e lib,
Notiamo che per includere dobbiamo utilizzare le parentesi graffe.

Il quoting
Il meccanismo del quoting utilizzato per inibire leffetto dei metacaratteri.
I metacaratteri cui applicato il quoting perdono il loro significato speciale e la shell li
tratta come caratteri ordinari.
Ci sono tre meccanismi di quoting:
- il metacarattere escape (\) inibisce leffetto speciale del metacarattere che lo
segue.
Ad esempio:
user> cp file file\?
user> ls file*

file file?
In questo caso non interpreta ? come metacarattere, ma crea il file file?.
-

Tutti i metacaratteri presenti in una stringa racchiusa tra singoli apici perdono
leffetto speciale.
Ad esempio:
user> cat file*?
in questo caso * e ? no hanno pi il valore di metacaratteri, ma fanno parte del nome
del file.

I metacaratteri per labbreviazione del pathname presenti in una stringa


racchiusa tra doppi apici perdono il loro effetto speciale (quindi non perdono
leffetto speciale TUTTI i metacaratteri della shell, comera nel caso precedente,
ma solo quelli pee labbreviazione del pathname).

Sezione B Uso di file e directory


CREAZIONE DI DIRECTORY E FILE
Per creare una nuova directory, si pu utilizzare il comando mkdir (make directory),
mentre per creare un file si pu usare cat.
Si pu creare una directory a condizione di essere il proprietario della directory
genitore.
Il proprietario di un file la persona che lo crea e diventa lunico che pu
controllarne laccesso.
Creazione delle nuove directory e dei file:
1. Digitare cd e premere Invio per accertarsi di essere nella home directory.
2. Digitare mkdir dip_4540 e premere Invio per creare una nuova directory
chiamata dip_4540
3. Digitare ls e premere Invio: la directory dip_4540 apparir nellelenco.
4. Digitare cd dip_4540 e premere Invio per passare alla nuova directory.
5. Utilizzare il comando cat per creare un file chiamato, ad esempio, phones1:

cat > phones1


Inserire il contenuto del file premendo Invio alla fine di ogni linea.

6. Premere Ctrl + Z
7. Digitare cd e premere Invio per tornare nella home directory.
Per rimuovere un file si utilizza il comando rm, mentre per eliminare una directory
vuota si usa il comando rmdir.
(Una directory deve essere vuota affinch sia possibile rimuoverla.)
IMPOSTAZONE DELLE AUTORIZZAZIONI PER I FILE
Linux un sistema operativo multiutente; per ogni file ci sono quattro categorie di
utenti:
root, owner, group, world.
Lamministratore del sistema (root) ha tutti i permessi su tutti i file (pu leggere,
scrivere ed eseguire ogni file). Per le altre categorie di utenti, invece, laccesso ai file
regolato dai permessi.
Nellanalizzare il risultato del comando ls abbiamo visto che nella prima colonna
compaiono il tipo di file e le autorizzazioni per laccesso.
Tale colonna era, per esempio, drwxr -xr -x, dove il primo carattere indica il tipo di
file mentre i caratteri che seguono sono suddivisi in tre sezioni di specificatori di
autorizzazioni, ognuna delle quali contiene tre specificatori, come mostrato in figura
Tipo Autorizz
al
dir wxazioni
d
r - xr - x
gruppo
file

Autorizzaz
ioni al
proprietari
o

Autoriz
zazioni
agli
altri

La prima sezione di specificatori indica le autorizzazioni del proprietario (owner), il


quale, come tutti gli utenti, appartiene ad un gruppo.
La seconda sezione indica le autorizzazioni del gruppo (group): questa specifica si
applica a tutti gli utenti diversi dal proprietario, ma che siano membri del gruppo del
proprietario.
La terza sezione indica le autorizzazioni di tutti gli altri (world), quindi si applica a tutti
gli utenti diversi dal proprietario e che non appartengano al suo gruppo.
In ogni sezione il primo carattere indica lautorizzazione alla lettura: se appare il
carattere r, questa categoria di utenti ha il permesso di leggere il file.
Il secondo carattere indica lautorizzazione alla scrittura: se appare il carattere w,
questa categoria di utenti ha il permesso di scrivere sul file e di cancellarlo.
Il terzo carattere indica lautorizzazione allesecuzione: se appare il carattere x,
questa categoria di utenti ha il permesso di eseguire il file.
Se invece appare un trattino (-) in corrispondenza della posizione di uno qualunque di
questi caratteri, quel tipo di autorizzazione negata.
NB: per attraversare una directory, bisogna avere il permesso di esecuzione su
di essa.
I permessi possono essere scritti con numeri anzich con lettere. In tal caso 1 indica il
permesso per lautorizzazione, mentre 0 indica che questa negata. Lordine

sempre lettura, scrittura ed esecuzione; per cui, lesempio precedente equivalente a


111101101.
Il permesso 7 5 5 corrisponder a 111 101 101, ovvero
rispettivamente per proprietario, gruppo e altri.

rwx r-x r-x

Se ad un utente viene assegnata lautorizzazione di lettura per una directory,


lutente pu visualizzare un elenco del suo contenuto. Lautorizzazione in
scrittura per una directory significa che lutente pu memorizzare ed eliminare
file al suo interno. Lautorizzazione di esecuzione per una directory significa che
lutente pu renderla la directory di lavoro corrente.
Sa sinistra a destra, le lettere drwxr-xr-x hanno il seguente significato:
d Indica il tipo di file (d=directory)
r Il proprietario del file ha lautorizzazione alla lettura
w Il proprietario del file ha lautorizzazione alla scrittura
x Il proprietario del file ha lautorizzazione allesecuzione
(nel caso di file, lo pu eseguire come un programma)
r Il gruppo ha autorizzazione alla lettura
- Il gruppo non ha autorizzazione alla scrittura
x Il gruppo ha autorizzazione allesecuzione
r Gli altri hanno lautorizzazione alla lettura
- Gli altri non hanno lautorizzazione alla scrittura
x Gli altri hanno lautorizzazione allesecuzione

ls -l /etc/passwd
-rw-rr-root

root

981 Sep 20 16 : 32 /etc/passwd

(passwd un file molto importante, in quanto al suo interno sono memorizzate le


password degli utenti e le informazioni sulla configurazione del file di accesso).
Si pu cambiare lo schema delle impostazioni di autorizzazione sostituendo una delle
lettere con un trattino per rimuovere, ossia negare, lautorizzazione.
Per esempio, impostando le autorizzazioni degli altri su - - -, essi non avranno pi
alcuna possibilit di leggere, scrivere o eseguire il file.
Lamministratore di sistema assegna gli identificatori di gruppo quando aggiunge un
nuovo account utente. Gli id (identificatori) di gruppo danno ad un gruppo di utenti lo
stesso accesso ai file da essi condivisi.
Gli altri sono tutti gli utenti che non sono associati al gruppo dellutente tramite un id
di gruppo.
Il comando chmod
Il comando di UNIX chmod permette di impostare le autorizzazioni per i file.
Si pu usare il comando chmod per impostare le autorizzazioni relative ai file di cui si
proprietari, quindi lowner che pu cambiare i permessi dei file tramite questo
comando.
Nella sua forma pi semplice, questo comando, accetta come argomento una stringa
simbolica seguita da uno o pi nomi di file. Le stringa simbolica specifica le
autorizzazioni che devono essere concesse o negate alle categorie di utenti.

1. Ad esempio: ugo+rwx
Nella stringa i caratteri ugo indicano lo user (equivalente a proprietario), group
o others, ossia proprietario, gruppo o altri. Queste categorie di utenti saranno
interessate dal comando chmod.
Il carattere successivo, il segno +, indica che le autorizzazioni sono concesse.
Mentre lultimo gruppo di caratteri, in questo caso rwx, indica le autorizzazioni
assegnate.
La stringa simbolica suddetta indica pertanto che vengono assegnate
autorizzazioni di lettura, scrittura ed esecuzione al proprietario, al gruppo e agli
altri utenti.
2. Supponiamo ora di usare la stringa simbolica in un comando per modificare le
autorizzazioni di accesso a miofile:

chmod ugo+rwx miofile


3. Se volessimo invece un comando che assegna lautorizzazione di lettura al
gruppo per il file clienti, avremmo:

chmod g+r clienti


4. Le stringhe simboliche permettono anche di negare autorizzazioni. Il comando
che segue nega le autorizzazioni di scrittura ed esecuzione al gruppo e agli altri
per il file info_account:

chmod go-wx info_account


5. Se volessimo assegnare tutti i permessi al proprietario e solo lettura a gruppo e
altri, riguardo il file f1, potremmo scrivere

chmod 744 f1
Infatti, in ottale 744 corrisponde a 111100100, ossia rwxr--r--.
6. Possiamo scegliere un modo ancora diverso per assegnare i permessi. Per
esempio, per ottenere il risultato precedente potremmo scrivere

chmod u=rwx, go=r f1


Coma abbiamo gi visto, u rappresenta lownwr, o user, g rappresenta il
gruppo ed o sta per world, o others.
Come mostrato negli esempi precedenti, possiamo usare i simboli +, -, = per
assegnare i permessi:
Assegna i permessi che lo seguono
+
Toglie i permessi che lo seguono
Imposta esattamente i permessi che lo seguono
=
(per cui, in generale, chmod g+r f1 diverso da chmod g=r f1).
Dalla propria directory si pu creare qualunque sottodirectory e impostare le
autorizzazioni ad essa relative. Tuttavia, non consentito creare sottodirectory al di
fuori della propria home directory a meno che lamministratore di sistema non prenda
un provvedimento speciale.
INODE E LINK
Per ogni oggetto del filesystem, UNIX memorizza le informazioni gestionali in una
struttura chiamata inode, memorizzata su disco ed avente un indice che ne identifica
la posizione allinterno di un array di inode.

Quindi inode un puntatore ad unarea del disco libera oppure occupata da un file.
Ad ogni file corrisponde un numero di inode, tale numero non altro che lindice
dellinode nellarray.
Tale struttura contiene:
- La locazione dei contenuti degli oggetti su disco;
- Il tipo di oggetto (-d, -l, );
- La taglia in byte delloggetto;
- Lora dellultima volta in cui linode del file stato modificato (ctime);
- Lora dellultima volta in cui il contenuto del file stato modificato (mtime);
- Lora dellultima volta in cui il file stato utilizzato, letto o eseguito (atime);
- Il possessore del file;
- Il gruppo del file;
- I permessi riguardanti il file.
Quindi linode contiene tutte le informazioni riferite ad un file di qualunque tipo
(comprese le directory), escluso il nome del file. In particolare, linode contiene i
riferimenti necessari per raggiungere i blocchi di dati del file ed ogni inode
raggiungibile tramite un numero (indice).
Un blocco di dati una zona del disco utilizzata per contenere dati, il contenuto di un
file pu essere distribuito in pi blocchi da dati.
La directory un file (cio un inode come gli altri) contenente un elenco di nomi di file
abbinati al numero di inode rispettivo.
Quindi le directory sono tabelle che associano i nomi dei file ai rispettivi numeri di
inode.
Le voci contenute in una directory sono dei collegamenti, indicati come collegamenti
fisici o hard link, a degli inode. Quindi nella directory vi sono diverse voci, ognuna delle
quali contiene il nome del file e il riferimento allinode corrispondente (collegamento
fisico).
Quando un programma chiama un file tramite il nome, il sistema operativo trova
linode corrispondente grazie alle directory, e linode punta ai blocchi di memoria in cui
sono memorizzate le informazioni riguardanti il file.
Rappresentiamo, in maniera stilizzata, un esempio di struttura del filesystem:
dir
ect f
f1
oryf2
2
A _n
dir
ecteg
w1
oryg1
B _n
ew

array
degli
4
inode
4
3
4
3
4
8
4
9
4
0
4
1
4
2
3

Quando due file puntano allo stesso indice, vuol dire che sono la stessa cosa.
Perci uno di essi sar un link, anche se non sappiamo dire a priori quale dei
due.

I file, nella memoria di massa, sono scritti, se possibile, in modo contiguo; altrimenti si
dispongono in blocchi separati.

La deframmentazione serve proprio a fare in modo che il sistema operativo riorganizzi


la memoria di massa, rendendo quanto pi possibile attigue le allocazioni da parte
dello stesso file.
LINK E LINK SIMBOLICI
Hard link
Abbiamo visto che la directory contiene i collegamenti fisici allinode.
Possiamo creare ulteriori collegamenti fisici, creando altri file che fanno riferimento
allo stesso spazio in memoria (allo stesso indice di inode).
In questo caso, il collegamento creato ha la stessa valenza di quello originale: con
lhard link del file f2, creo un file, f2_new, cha ha un indice inode analogo a quello di
f2; ottengo in questo modo un ulteriore collegamento fisico e cancellando il file f2, non
avr problemi per quanto riguarda f2_new.
Il comando utilizzato per creare questo tipo di collegamento

ln.

Con il comando

ln f1 f1_new
otteniamo leffetto analizzato sopra, il file f2_new un link avente lo stesso inode di
f2.
Soft link
Possiamo creare anche dei collegamenti cosiddetti simbolici, in questo caso i file creati
non fanno riferimento allo spazio in memoria, ma al file di partenza.
Con il soft link del file g2, creo un file, g2_new, che ha un pathname analogo a quello
di g2; in questo modo non ottengo un collegamento fisico, ma solo un puntatore al file
g2 e cancellando questultimo file g2_new rimarr appeso.
Il comando utilizzato per creare questo tipo di collegamento ln s.
Con il comando:

ls s g2 g2_new
otteniamo leffetto analizzato sopra, il file g2_new un link avente lo stesso pathname
di g2.
COPIA DI FILE
Si utilizza il comando cp per copiare un file di origine in un file di destinazione.
UNIX sovrascrive il file di destinazione senza avvisare, a meno che si utilizzi lopzione
i.
La notazione punto unabbreviazione per indicare la directory corrente come
destinazione di un comando cp.
Alcune opzioni per tale comando sono:
Forza la sovrascrittura dei file, senza chiedere interventi da parte
-f
dellutente
attiva la modalit interattiva, che chiede conferma prima dell'eventuale
-i
sovrascrittura di file preesistenti
mantiene, se possibile, gli attributi del file
-p
-r, -R permette di attivare la modalit ricorsiva, consentendo la copia di directory
Il comando mv

Il comando mv (move) serve per spostare, o rinominare, file e directory.


La sintassi del comando la seguente: mv [opzioni] origine destinazione ,
mentre le opzioni sono le stesse del comando cp.
Alcuni esempi di utilizzo del comando mv:
1. mv miofile nuovofile
cambier il nome del file miofile in nuovofile
2.

mv miofile /prova
Sposter il file miofile nella directory prova, sovrascrivendo un eventuale
file con lo stesso nome.

3.

mv /prova /prova_nuova
Cambier il nome della directory

prova in prova_nuova

I comandi cp e mv possono prendere come primo argomento una lista di file;


in tal caso il secondo argomento deve essere una directory:
Ad esempio:

Cp f1 f2 f3 d1
Copia i file f1, f2, f3 nella directory d1.

Potrebbero piacerti anche

  • Diagramma Di Stato Acqua
    Diagramma Di Stato Acqua
    Documento1 pagina
    Diagramma Di Stato Acqua
    Ange
    Nessuna valutazione finora
  • Cocktail
    Cocktail
    Documento2 pagine
    Cocktail
    Ange
    Nessuna valutazione finora
  • Capitolo 9
    Capitolo 9
    Documento7 pagine
    Capitolo 9
    Ange
    Nessuna valutazione finora
  • Appunti Struttura Della Materia
    Appunti Struttura Della Materia
    Documento19 pagine
    Appunti Struttura Della Materia
    Ange
    Nessuna valutazione finora
  • Svilippo in Serie Fourier 01
    Svilippo in Serie Fourier 01
    Documento20 pagine
    Svilippo in Serie Fourier 01
    cadiz
    Nessuna valutazione finora
  • Appunti Struttura Della Materia
    Appunti Struttura Della Materia
    Documento19 pagine
    Appunti Struttura Della Materia
    Ange
    Nessuna valutazione finora
  • Capitolo 6
    Capitolo 6
    Documento13 pagine
    Capitolo 6
    Ange
    Nessuna valutazione finora
  • Capitolo 9
    Capitolo 9
    Documento7 pagine
    Capitolo 9
    Ange
    Nessuna valutazione finora
  • Rumore Nei Circuiti
    Rumore Nei Circuiti
    Documento11 pagine
    Rumore Nei Circuiti
    Rhoen
    Nessuna valutazione finora
  • Capitolo 7
    Capitolo 7
    Documento5 pagine
    Capitolo 7
    Ange
    Nessuna valutazione finora
  • Capitolo 8
    Capitolo 8
    Documento6 pagine
    Capitolo 8
    Ange
    Nessuna valutazione finora
  • Echo
    Echo
    Documento2 pagine
    Echo
    Ange
    Nessuna valutazione finora
  • Capitolo 5
    Capitolo 5
    Documento6 pagine
    Capitolo 5
    Ange
    Nessuna valutazione finora
  • Echo
    Echo
    Documento2 pagine
    Echo
    Ange
    Nessuna valutazione finora
  • Bash
    Bash
    Documento2 pagine
    Bash
    Ange
    Nessuna valutazione finora
  • Capitolo 4
    Capitolo 4
    Documento5 pagine
    Capitolo 4
    Ange
    Nessuna valutazione finora
  • Capitolo 3
    Capitolo 3
    Documento12 pagine
    Capitolo 3
    Ange
    Nessuna valutazione finora
  • Essenza Di Unix
    Essenza Di Unix
    Documento11 pagine
    Essenza Di Unix
    Ange
    Nessuna valutazione finora