
ln è un comando deisistemi operativiUnix eUnix-like, e più in generale dei sistemiPOSIX[1], che creacollegamenti simbolici ecollegamenti fisici afile edirectory. Se non diversamente specificato, crea collegamenti fisici.
La sintassi generale diln è la seguente:
ln [opzioni] [--]sorgente1 [sorgente2 …]destinazione
I parametrisorgente indicano i nomi dei file e/o delle directory verso cui creare il collegamento. Se viene specificato un solo parametrosorgente, il parametrodestinazione indica il nome del collegamento.
Se vengono specificati più parametrisorgente, il parametrodestinazione deve necessariamente essere una directory esistente, o al più uncollegamento simbolico ad una directory.
Il doppio trattino-- (facoltativo) indica che i parametri successivi non sono da considerarsi opzioni.
Tra le opzioni principali vi sono:
Alcuni sistemi, tra cuiGNU/Linux, vietano espressamente la creazione di collegamenti fisici a directory per motivi di sicurezza: potendoli creare è infatti possibile ottenere gerarchie nelfile system che si autoincludono, e che possono quindi portare i programmi che esaminano ilfile system ricorsivamente (come ad esempio quelli che effettuano ilbackup) a discendere all'infinito nella gerarchia, di fatto impedendone l'utilizzo.
Altri sistemi permettono questa operazione solo alsuperuser (root).
Quando si creano collegamenti simbolici (opzione-s) non viene verificata l'esistenza dei file e/o directory elencati nei parametrisorgente; è possibile quindi creare collegamenti simbolici a file e/o directory inesistenti, nel qual caso il collegamento simbolico risulta subito orfano.
In alcuni sistemi Unix e Unix-like (tra cuiGNU/Linux eSolaris) è possibile creare un collegamento fisico ad un collegamento simbolico (e viene incrementato il numero di riferimenti al collegamento simbolico stesso), mentre in altri (tra cuiHP-UX) ciò risulta nella creazione di un collegamento fisico al file o alla directory a cui il collegamento simbolico si riferisce (per cui viene incrementato il numero di riferimenti del file o della directory).[2]
Crea un collegamento simbolico chiamatosoftlink.txt al filefile.txt:
ln -s file.txt softlink.txt
Crea un collegamento fisico chiamatohardlink.txt al filefile.txt:
ln file.txt hardlink.txt