I lettori che sanno usare
le interfacce
a riga di comando (MS-DOS, piuttosto che DOS box di Windows o
Terminale di Linux) probabilmente conoscono già i contenuti di
questa lezione, per cui se vogliono, possono passare alla
successiva,
Premessa:
Un tempo i dispositivi di
memoria permanente (nastri, dischi, tamburi) avevano una capacità di
memorizzazione notevolmente più ridotta rispetto ai dispositivi
attuali. Ad esempio i floppy disk, single side, single density da 5"
dell'IBM PC memorizzavano al massimo 160 KByte, l'equivalente di un
ottantina di pagine di testo in formato ASCII.
Non c'era necessità
di ricorrere ad ulteriori suddivisioni. Il disco era un ambiente
unico che ospitava poche decine di file che potevano essere elencati
in due o tre schermate.
Con l'introduzione di dischi di più alta
capacità si cominciò a porre il problema dell'organizzazione del
disco ovvero come fare per facilitare la ricerca di un documento
all'interno di un unità che poteva contenere centinaia o migliaia di
file, pertanto a partire da MS-DOS 2.0 si adottò un
nuovo filesystem ispirato a quello di UNIX, basato sul concetto di
directory organizzate ad albero.
Indipendentemente
dal fatto che si parli di directory, di folder
o
cartelle, l'organizzazione del filesystem basata
sull'albero
delle directory è una caratteristica di tutti i sistemi operativi
moderni, a partire dagli anni '80, pertanto le successive
considerazioni, fatto salvo per alcune postille su cui torneremo, si
applicano a tutti i principali sistemi operativi: MS-DOS, Windows,
UNIX, Linux, eccetera.
Dal punto di vista pratico
l'introduzione del concetto di directory ha
comportato
una rivoluzione organizzativa paragonabile a quello che si avrebbe,
in un'anagrafe, passando un unico grosso armadio pieno di documenti
cartacei gettati alla rinfusa ad un moderno classificatore dotato di
grossi cassetti all'interno predisposti per ospitare dei faldoni, che
a loro volta possono contenere delle cartelline e così via, sino a
giungere ai fogli di carta dei singoli documenti.
Supponendo di
essere interessati all'atto di nascita di Mario Rossi, nato il 29
febbraio 1980, nel primo contesto (quello dell'armadio unico) saremmo
costretti a cercare il documento che ci serve sfogliando uno a uno i
documenti impilati in molteplici mucchi, nel secondo basterà aprire
il cassetto corrispondente alla lettera "R" del
classificatore contenente gli atti di nascita e cercare il faldone
"Ro", che conterrà una cartellina "Rossi"
all'interno della quale troveremo il documento cercato.
Supponendo
che l'archivio dell'anagrafe sia stato informatizzato potrebbe essere
sufficiente cercare il documento:
\Atti\Nascita\ Rossi\Rossi_Mario_1980_02_29.doc
I sistemi operativi della
Mcrosoft a differenza di UNIX e dei suoi derivati (Linux, OS X,
eccetera) conservano ancor oggi una "compatibilità" verso
l'organizzazione di CP/M e MS-DOS 1.0, consentendo di fare
riferimento al disco. Per cui all'indirizzo
precedente
potrebbe corrispondere un secondo percorso (path):
C:\Atti\Nascita\ Rossi\Rossi_Mario_1980_02_29.doc
che porta allo stesso documento
(file).
Immaginando di avere un unico disco, fatto che ci
esenta dalla necessità di far specificare il nome dell'unità (ad
esempio C:), ci sono comunque molti modi di far riferimento allo
stesso file: il più ovio ma anche il più faticoso è quello di
indicare il percorso completo (path) a partire dalla
directory
principale (root). Ad esempio:
\Atti\Nascita\
Rossi\Rossi_Mario_1980_02_29.doc
Questa tecnica di
indirizzamento viene detta indirizzamento assoluto
ed ha il
pregio di individuare sempre univocamente al più un file.
In
alternativa possiamo ricorrere all'indirizzamento relativo. Per
chiarire di cosa si tratti consideriamo l'albero genealogico della
famiglia Rossi.
In questo contesto Mario
Rossi può
essere indicato come: il nipote di Roberto e Sandra, come il figlio
di Giacomo Rossi, oppure come il padre di Gianni Rossi.
Nell'ambito
dei filesystem è possibile fornire delle indicazioni simili, basate
sui "gradi di parentela", usando una notazione basata sui
simboli punto "." e barra ("/"
per
Linux, "\" per MS-DOS e Windows).
In particolare il
simbolo punto "." designa la directory
attualmente selezionata (che può essere interpretata come il nodo
genitore), il simbolo punto punto ".." indica la
directory genitore di "." (il nonno) mentre la barra
evidenzi la relazione genitore/figlio.
Dall'interno della
directory directory Mario_Rossi (il
filesystem prevede
un solo genitore),
il figlio, Gianni Rossi, sarà indicato
come: ./Gianni_Rossi
Il padre, Giacomo Rossi, sarà indicato come:
../Giacomo_Rossi
Il nonno, Roberto Rossi, sarà indicato come:
../../Roberto_Rossi
La sorella, Mara Rossi, che condivide lo
stesso nodo genitore di Mario Rossi, sarà indicata da:
./Mara_Rossi
Il nipote, Marco Gialli, da: ./Marta Rossi/Marco
Gialli
E così via.
Da una pagina HTML (Mario Rossi), tutte
le pagine della stessa directory (fratelli) potranno essere
riferite usando la notazione relativa:
href="./fratello.html"
o
più semplicemente come:
href="fratello.html" omettendo
il punto.
Il file index.html presente nella
directory soprastante sarà indicato in modo relativo da
href=/../index.html".
Mente il file prova.html, contenuto
nella sub-directory figlio della directory corrente sarà indicato
da: href="./figlio/prova.html".