Il comando ln viene utilizzato per creare un collegamento a un file. Il collegamento consente a un nome di file in una directory (il collegamento) di puntare a un file in un'altra directory (la destinazione). Un collegamento non contiene dati propri, solo un riferimento al file di destinazione. Eventuali modifiche al collegamento si rifletteranno nel file di destinazione. Se non specifichi il nome del collegamento, il comando ln creerà il collegamento nella directory di lavoro corrente.
Sintassi
La sintassi del comando ln è:
# ln [options] {target name} [link name]
In Opzioni di comando
Il comando ln ha varie opzioni. Alcune delle opzioni usate di frequente sono riportate nella tabella seguente.
Opzione | usato per |
---|---|
–backup | Esegui il backup dei file di destinazione esistenti. |
-f | Rimuovi i file di destinazione esistenti. |
-s | Crea collegamenti simbolici invece di collegamenti reali. -i Richiedi la rimozione dei file di destinazione. |
-v | Stampa il nome di un file prima del collegamento. |
Tipi di link
Usando il comando ln, puoi creare due tipi di link:hard e simbolico (soft). I collegamenti fisici e simbolici sono una caratteristica del file system e sono comuni nella maggior parte dei file system supportati da Linux. I file system ext2, ext3, ext4 e XFS supportano tutti i collegamenti fisici e simbolici.
Collegamenti reali
Un collegamento fisico è un riferimento a un altro file; consente ai dati del file di avere più di un nome in posizioni diverse nello stesso file system. Le applicazioni trattano un collegamento reale come un file reale. Se il file originale viene eliminato dopo la creazione di un collegamento reale, tutto il suo contenuto sarà ancora disponibile nel file collegato. Questo perché l'inode di un hard link è lo stesso del suo target; in altre parole, punta allo stesso oggetto sul file system. Non è possibile creare collegamenti fisici tra due directory, né possono essere creati tra due file in file system diversi.
Link soft (Link simbolici)
Un collegamento simbolico è un riferimento a un file o una directory che può estendersi su più file system. Se il file o la directory originali vengono eliminati dopo la creazione di un collegamento simbolico, il contenuto originale viene perso. Questo perché l'inode di un collegamento simbolico è diverso dal suo target; in altre parole, punta a un oggetto diverso sul file system. Un collegamento simbolico è anche noto come collegamento software.
Esempi di link
Quello che segue è un esempio di creazione di un collegamento reale utilizzando il comando ln, dove / backup/backup-report è la destinazione del collegamento e ~/backup-report è il collegamento stesso:
$ ln /backup/backup-report ~/backup-report
Quello che segue è un esempio dello stesso, ma la creazione di un collegamento simbolico invece di un collegamento fisico:
$ ln -s /backup/backup-report ~/backup-report
Negli esempi di comandi
1. Per creare un collegamento a un file esistente:
# ln file.txt file.ln
2. Per creare un collegamento software per il file esistente:
# ln -s file.txt file.ln
3. Per eseguire un backup di ogni file di destinazione:
# ln --backup file.txt file.bk
4. Per consentire al superutente di tentare di creare directory collegate in modo rigido:
# ln -d
5. Per creare i collegamenti rimuovendo i file di destinazione esistenti:
# ln -f # ln --force
6. Per richiedere se rimuovere il file di destinazione:
# ln -i # ln --interactive
7. Per creare collegamenti reali a riferimenti di collegamenti simbolici:
# ln -L # ln --logical
8. Per trattare la directory del collegamento simbolico di destinazione come file:
# ln -n # ln --no-dereference
9. Per creare collegamenti reali direttamente a collegamenti simbolici:
# ln -P # ln --physical
10. Per creare collegamenti simbolici anziché collegamenti reali:
# ln -s
11. Per sovrascrivere il solito suffisso di backup:
# ln -S # ln --suffix=SUFFIX
12. Per specificare la directory in cui deve essere creata la directory:
# ln -t # ln --target-directory=DIRECTORY
13. Per trattare il nome del collegamento come un file normale:
# ln -T # ln --no-target-directory
14. Per stampare il nome di ogni file collegato:
# ln -v # ln --verbose
15. Per ottenere l'aiuto per ln:
# ln --help
16. Per ottenere le informazioni sulla versione:
# ln --version