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 realta' sarebbe piu' corretto dire che ad ogni nome di file viene associato l'i-node del file stesso. Cioe', per ogni file esiste una coppia 'nome del file'/i-node.
ls -l pippo -rw-rw--rw 1 mau utenti 553, Jul 18 1994 /home/mau/pippo
Il numero precedente al nome del proprietario del file (1) e' il numero di link che tale file possiede.
Creare un ulteriore link percio' significa creare un ulteriore nome per referenziare il file o, se si preferisce, un ulteriore handle. Il comando che permette cio' e' il comando ln (LiNk, cioe' collegamento):
link fisico (hard link)
ls pippo, pluto, topolino ls -l pippo -rw-rw--rw 1 mau utenti 553 Jul 18 1994 /home/mau/pippo ln pippo pippo2 (creo il secondo nome 'pippo2' al file pippo) ls pippo, pluto, topolino, pippo2 ls -l pippo -rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo ls -l pippo2 -rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo2
ls -i visualizza il numero di i-node (-i sta per i-node appunto)
ls -i pippo pippo2 15436 -rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo 15436 -rw-rw--rw 2 mau utenti 553 Jul 18 1994 /home/mau/pippo2
un file viene cancellato effettivamente solo quando vengono eliminati tutti i suoi link
Per creare un link simbolico occorre usare il comando ln con l'opzione -s:
ln -s pippo pippo2
questo comando crea un link simbolico, cioe' un file speciale che contiene il percorso del file originario. Per evidenziare cio' si puo' usare il comando ls con le opzioni i ed l:
ls -il pippo pippo2 15436 -rw-rw--rw 1 mau utenti 553 Jul 18 1994 /home/mau/pippo 15437 lrw-rw--rw 1 mau utenti 5 Jul 18 1994 /home/mau/pippo2 -> /home/mau/pippo
In quali casi e' utile usare un link simbolico? Ad esempio quando si vuole creare un link ad una directory oppure quando si vuole creare un link ad un file o ad una directory che si trova all'interno di un filesystem diverso. Con un link simbolico infatti e' possibile far riferimento ad un file che si trova in un dispositivo diverso o addirittura in un filesystem diverso.