ln (Unix)

Da Wikipedia, l'enciclopedia libera.
Vai alla navigazione Vai alla ricerca

ln è un comando dei sistemi operativi Unix e Unix-like, e più in generale dei sistemi POSIX[1], che crea collegamenti simbolici e collegamenti fisici a file e directory. Se non diversamente specificato, crea collegamenti fisici.

Sintassi[modifica | modifica wikitesto]

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.

Opzioni[modifica | modifica wikitesto]

Tra le opzioni principali vi sono:

-s
Crea collegamenti simbolici invece di collegamenti fisici. In questo caso i nomi indicati dai parametri sorgente possono anche indicare file o directory non esistenti.
-f
Nel caso non sia possibile creare il collegamento poiché esiste già un file con lo stesso nome, tenta di rimuoverlo.

Collegamenti fisici a directory[modifica | modifica wikitesto]

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).

Collegamenti simbolici a file inesistenti[modifica | modifica wikitesto]

Quando si creano collegamenti simbolici (opzione -s) non viene verificata l'esistenza dei file e/o directory elencati nei parametri sorgente; è possibile quindi creare collegamenti simbolici a file e/o directory inesistenti, nel qual caso il collegamento simbolico risulta subito orfano.

Collegamenti fisici a collegamenti simbolici[modifica | modifica wikitesto]

In alcuni sistemi Unix e Unix-like (tra cui GNU/Linux e Solaris) è possibile creare un collegamento fisico ad un collegamento simbolico (e viene incrementato il numero di riferimenti al collegamento simbolico stesso), mentre in altri (tra cui HP-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]

Esempi[modifica | modifica wikitesto]

Crea un collegamento simbolico chiamato softlink.txt al file file.txt:

ln -s file.txt softlink.txt

Crea un collegamento fisico chiamato hardlink.txt al file file.txt:

ln file.txt hardlink.txt

Note[modifica | modifica wikitesto]

  1. ^ (EN) ln, in The Open Group Base Specifications Issue 6 IEEE Std 1003.1, 2004 Edition. URL consultato il 25-05-2008.
  2. ^ (EN) Jake Edge, Standards, the kernel and Postfix, su lwn.net, Eklektix, Inc., 20-08-2008. URL consultato il 03-09-2008.

Voci correlate[modifica | modifica wikitesto]

Collegamenti esterni[modifica | modifica wikitesto]

  Portale Informatica: accedi alle voci di Wikipedia che trattano di Informatica