Translation(s): English - Italiano
ln crea collegamenti tra file.
In sistemi operativi simili ad Unix (incluso Linux) ci sono due concetti differenti di collegamento, solitamente chiamati "collegamenti fisici" e "collegamenti simbolici":
Un collegamento fisico (hard link) è solo un nome per un file (e un file può avere più di un nome). Viene eliminato dal disco solo quando l'ultimo nome viene rimosso. Il numero dei nomi viene mostrato da ls(1). Non esiste un nome originale: tutti hanno la stessa importanza; di solito, ma non necessariamente, tutti i nomi di un file si trovano nel filesystem che contiene anche i suoi dati.
Un collegamento simbolico (o soft link) è una faccenda completamente diversa: è un piccolo file speciale che contiene un percorso. Perciò può puntare a file su filesystem diversi (eventualmente NFS montato da macchine diverse), e non necessessariamente a file esistenti. Quando si accede (con le chiamate di sistema open(2) o stat(2)) ad un riferimento ad un collegamento simbolico, il kernel del sistema operativo lo sostituisce con un riferimento al file indicato dal percorso. (Tuttavia, con rm(1) e unlink(2) viene rimosso il collegamento stesso e non il file a cui punta. lstat(2) e readlink(2) sono speciali chiamate di sistema che leggono lo stato di un collegamento simbolico e il nome del file a cui punta. Per altre chiamate vi è una certa incertezza e variabilità tra i sistemi operativi riguardo all'oggetto su cui agisce l'operazione: il collegamento simbolico o il file al quale punta).
Per impostazione predefinita, ln crea collegamenti fisici tra i file, con l'opzione -s li crea simbolici (o 'soft').
Se viene dato un solo file lo collega nella directory corrente, cioè crea un collegamento a tale file nella stessa directory con un nome uguale al (l'ultimo elemento del) nome di quel file (questa è un'estensione GNU). Altrimenti, se l'ultimo argomento indica una directory esistente, ln crea collegamenti ad ogni file di origine indicato in tale directory, con un nome uguale al (l'ultimo elemento del) nome del file sorgente. (Si veda però sotto la descrizione dell'opzione --no-dereference). Se invece vengono passati due file crea un collegamento chiamato <destinazione> al file <origine>. Se l'ultimo argomento non è una directory e vengono specificati più di due file, si ottiene un errore.
Il comportamento standard di ln è di non rimuovere file o collegamenti simbolici già esistenti. (Perciò può essere usato a scopo di blocco: avrà successo solo se <destinazione> non esiste già.) Ma può essere forzato con l'opzione -f.
Nelle implementazioni esistenti, la creazione di un collegamento fisico ad una directory, quando ciò è possibile, è permessa solo all'utente root. POSIX vieta alla chiamata di sistema link(2) e a ln di fare collegamenti fisici alle directory, ma non vieta ai collegamenti fisici di uscire fuori dai confini di un filesystem).
Collegamenti esterni
La pagina di manuale di ln(1).