Linux-Mandrake: Manuale di riferimento | ||
---|---|---|
Indietro | Capitolo 10. Il filesystem di GNU/Linux: ext2fs (EXTended 2 FileSystem) | Avanti |
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:
non è possibile collegare due file l'uno all'altro se questi file risiedono su filesystem diversi, per un semplice motivo: il contatore di link è conservato all'interno dell'inode stesso, e gli inode non possono essere condivisi fra filesystem. I collegamenti simbolici, invece, permettono questa operazione;
non è possibile collegare due directory, poiché abbiamo visto che il contatore di link per una directory ha un uso particolare. Ma potete creare un collegamento a una directory e usarlo come se fosse effettivamente una directory.
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.
Indietro | Partenza | Avanti |
File "speciali": file in modalità a caratteri e file in modalità a blocchi | Risali | Attributi dei file |