ln — Creare collegamenti
Il comando ln è usato per creare collegamenti sia hard che simbolici. È usato in due modi. Di seguito viene creato un collegamento reale:
ln collegamento al file
Di seguito viene creato un collegamento simbolico:
ln -s item link
dove item è un file o una directory.
Crea un collegamento simbolico chiamato softlink.txt al file file.txt:
ln -s file.txt softlink.txt
La sintassi generale di ln è la seguente:
ln [opzioni] [–] sorgente1 [sorgente2 …] destinazione
I parametri sorgente indicano i nomi dei file e/o delle directory verso cui creare il collegamento. Se viene specificato un solo parametro sorgente, il parametro destinazione indica il nome del collegamento.
Se vengono specificati più parametri sorgente, il parametro destinazione deve necessariamente essere una directory esistente, o al più un collegamento simbolico ad una directory.
Il doppio trattino — (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
Collegamenti fisici a directory
Alcuni sistemi, tra cui GNU/Linux, vietano espressamente la creazione di collegamenti fisici a directory per motivi di sicurezza: potendoli creare è infatti possibile ottenere gerarchie nel file system che si autoincludono, e che possono quindi portare i programmi che esaminano il file system ricorsivamente (come ad esempio quelli che effettuano il backup) a discendere all’infinito nella gerarchia, di fatto impedendone l’utilizzo.
Altri sistemi permettono questa operazione solo al superuser (root)
Crea un collegamento fisico chiamato hardlink.txt al file file.txt:
ln file.txt hardlink.txt
I collegamenti reali sono il modo originale Unix di creare collegamenti, rispetto ai collegamenti simbolici, che sono più moderni.
Per impostazione predefinita, ogni file ha un singolo collegamento reale che dà il nome al file.
Quando creiamo un collegamento reale, creiamo una voce di directory aggiuntiva per un file. I collegamenti fisici hanno due importanti limitazioni.
-
Un collegamento reale non può fare riferimento a un file esterno al proprio file system.
Questo indica che un collegamento non può fare riferimento a un file che non si trova sulla stessa partizione del disco del collegamento stesso.
-
Un collegamento reale potrebbe non fare riferimento a una directory.