9.5. I link simbolici e le limitazioni degli "hard" link

Dobbiamo adesso affrontare un errore molto comune, anche fra gli utenti Unix, dovuto al fatto che i link come li abbiamo visti fino a questo momento (chiamati erroneamente "hard" link) sono associati soltanto a file di tipo normale (e abbiamo visto che le cose non stanno così - soprattutto se si considera che anche i link simbolici sono "linked"). Ma questo richiede che prima spieghiamo cosa sono i collegamenti simbolici ("soft" link, o, anche più spesso, "symlink").

I collegamenti simbolici sono file di un tipo particolare, il cui unico contenuto è una stringa arbitraria, che può riferirsi a un nome di file esistente oppure no. Quando utilizzate un collegamento simbolico dalla riga di comando o in un programma, di fatto accedete al file al quale si riferisce, se esiste. Ad esempio:

$ echo Ciao >ilmiofile
$ ln -s ilmiofile ilmiolink
$ ls -il
total 4
    169 -rw-rw-r--    1 queen       queen              6 dic 10 21:30 ilmiofile
    416 lrwxrwxrwx    1 queen       queen              6 dic 10 21:30 ilmiolink -> ilmiofile
$ cat ilmiofile
Ciao
$ cat ilmiolink
Ciao

Come potete vedere il tipo di file per ilmiofile è 'l', che sta per Link di tipo simbolico. I diritti di accesso per un collegamento simbolico non sono significativi: sono sempre impostati a rwxrwxrwx. Noterete anche che è un file differente rispetto a ilmiofile, poiché il suo numero di inode è diverso. Ma si riferisce a quest'ultimo in maniera simbolica, per cui quando digitate cat ilmiolink, in realtà ottenete come risultato la visualizzazione del contenuto di ilmiofile. Per dimostrare che un collegamento simbolico contiene una stringa arbitraria possiamo fare quanto segue:

$ ln -s "Io non esisto" unaltrolink
$ ls -il unaltrolink
    418 lrwxrwxrwx    1 queen       queen             20 dic 10 21:43 unaltrolink ->; 
Io non esisto
$ cat unaltrolink
cat: unaltrolink: No such file or directory
$

Ma i collegamenti simbolici esistono perché permettono di superare molte limitazioni degli ("hard") link:

I collegamenti simbolici, dunque, si rivelano utili in molte situazioni e, molto spesso, vengono usati per collegare file anche quando potrebbe essere usato un collegamento normale. Un vantaggio dei collegamenti normali, comunque, è dato dal fatto che, se cancellate "il file originale", il file non viene perso, ma rimane accessibile tramite il link.

Se ci avete seguito con attenzione, infine, sapete quali sono le dimensioni di un collegamento simbolico: si tratta semplicemente delle dimensioni della stringa.


Tux on Star from MandrakeSoft Linux è un marchio registrato di Linus Torvalds. Tutti gli altri marchi e copyright appartengono ai rispettivi proprietari.
Se non diversamente specificato, i diritti di tutto il contenuto di queste pagine e di tutte le immagini sono proprietà di MandrakeSoft S.A. e MandrakeSoft Inc. 2000.
http://www.linux-mandrake.com/