ln crea collegamenti tra file.
In sistemi operativi simili ad Unix (incluso Linux) ci sono due concetti differenti di collegamento, solitamente chiamati "hard link" e "soft link":
Un hard link è solo un nome di un file (e un file può avere diversi nomi). Viene eliminato dal disco solo quando l'ultimo nome viene rimosso. Il numero dei nomi è dato da ls(1). Non c'è niente come 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 soft link (o collegamento simbolico) è un animale completamente diverso: è un piccolo file che contiene un particolare percorso. Perciò può puntare a file su filesystem diversi (eventualmente NFS montato da macchine diverse), e non necessitano effettivamente di file esistenti. Quando si accede (con le chiamate di sistema open(2) o stat(2)) un riferimento ad un collegamento simbolico è sostituito dal kernel operante con uno al file denominato dal percorso. (Tuttavia, con rm(1) e unlink(2) viene rimosso il link 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 variazione tra i sistemi operativi se l'operazione agisce sul collegamento simbolico, o sul 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 lo stesso nome al (l'ultimo elemento di) 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) nome del file sorgente (si veda sotto la descrizione dell'opzione --no-dereference). Se invece vengono passati due file crea un collegamento chiamato dest al file di origine. Se l'ultimo argomento non è una directory e più di due file sono specificati, è un errore.
Lo standard di ln è di non rimuovere file o collegamenti simbolici già esistenti (può essere usato per bloccare certe intenzioni: avrà successo solo se dest non esiste già), ma può essere forzato con l'opzione -f.
Solo l'utente root può creare un collegamento fisico ad una directory su implementazioni esistenti. POSIX vieta la chiamata di sistema link(2) e a ln di fare collegamenti fisici alle directory (ma non vieta ai collegamenti fisici di attraversare filesystem confinanti).
Collegamenti esterni
La pagina di manuale di ln(1).