Un collegamento è un riferimento a un altro file. I collegamenti danno allo stesso file più nomi e consentono loro di risiedere in due o più posizioni contemporaneamente.
Esistono due tipi di link:
- Link software o link simbolico:questo è semplicemente un collegamento al file originale.
- Hard link:punta alla posizione di memoria del file originale.
Questa immagine mostra come funzionano i due tipi di link:
Sia gli hard link che i soft link vengono creati con il comando ln.
In questo tutorial, ti mostrerò come utilizzare il comando ln per creare vari tipi di collegamenti in Linux.
Esempi del comando ln
La sintassi per il comando ln è semplice:
ln [option] target_file link_name
Lascia che ti mostri alcuni esempi di utilizzo del comando ln per creare collegamenti in Linux.
1. Crea un collegamento reale a un file
Per creare un collegamento fisico a un file, puoi utilizzare il comando ln senza alcuna opzione come questa:
ln target_file link_name
2. Crea un collegamento software a un file
Per creare un collegamento simbolico a un file, utilizzare l'opzione -s
con il nome del file di destinazione e il nome del collegamento
ln -s target_file link_name
La maggior parte dei terminali Linux mostrerà il collegamento software in un colore diverso insieme alla destinazione a cui punta.
Noterai anche che i link iniziano con l
invece del solito -
per i file nella visualizzazione elenco lungo.
Anche se il tuo terminale non mostra i soft link di colore diverso, puoi identificare i link in questo modo.
3. Crea un collegamento software a una directory
Creare un collegamento software a una directory equivale a creare un collegamento simbolico a un file. Devi solo sostituire il nome/percorso del file di destinazione con il nome/percorso della directory.
ln -s target_directory link_name
Noterai che il colore del soft link e dell'hard link è generalmente diverso nel terminale Linux. Il collegamento fisico a una directory non è possibile (normalmente).
4. Aggiorna un soft link (o hard link) esistente
È possibile sovrascrivere un collegamento esistente. Per impostazione predefinita, se provi a utilizzare un collegamento esistente per puntare a un nuovo file, verrà generato un errore:
ln: failed to create symbolic link 'soft-link-to-file': File exists
Il comando ln ha due opzioni per questo scopo:
-i
:La modalità interattiva ti chiede se vuoi sovrascrivere il link esistente.-f
:La modalità forzata aggiorna semplicemente il collegamento esistente senza alcuna conferma.
Si supponga di voler forzare l'aggiornamento di un collegamento simbolico. Ecco cosa puoi fare:
ln -sf new_file existing_soft_link
Ricorda di aggiungere le s
per soft link altrimenti convertirai il soft link in hard link.
Suggerimento bonus:ottenere il file originale seguendo una catena di collegamenti
Normalmente, quando usi il comando ls con -l
opzione, mostra il file a cui punta.
Ma se è presente una catena di collegamenti, non mostrerà il file originale. Ad esempio, si crea un collegamento a un file e quindi si crea un altro collegamento al primo collegamento. Nell'elenco lungo, il secondo collegamento punterà al primo collegamento.
Per trovare il file originale da una catena di link, puoi usare il readlink -f
nel modo seguente:
readlink -f soft_link
Il -f
opzioni sta per 'segui' come in 'segui la catena'.
Questa immagine spiega meglio l'esempio:
Perché abbiamo bisogno di link?
Ora che sai come creare collegamenti, vediamo brevemente perché abbiamo bisogno di collegamenti? A quale scopo pratico servono?
Potrebbero esserci diversi casi d'uso. Supponiamo che tu abbia scaricato un software fornito con il suo codice e un file eseguibile. Mantieni l'intero contenuto in /opt
directory. Ma per eseguire il programma da qualsiasi luogo, devi mettere il suo eseguibile in /usr/bin
directory.
Se sposti l'eseguibile in questa directory, potrebbe non funzionare poiché deve accedere ad parte del codice e non troverà il percorso di questi file da /usr/bin
directory. Qui è dove puoi creare un collegamento a questo file eseguibile in /usr/bin
directory.
In questo modo, il programma può essere eseguito da qualsiasi punto del sistema e l'eseguibile del programma rimane nella sua cartella del programma originale.
I collegamenti sono una parte essenziale di Linux. Li troverai utilizzati in molti punti dei tuoi sistemi. Basta guardare in /lib
directory e vedrai molti soft link.
E poi?
Consiglio vivamente di leggere i seguenti articoli relativi al concetto di link in Linux:
- Cosa sono i soft link?
- Spiegazione dettagliata degli hard link
- Trovare collegamenti simbolici interrotti
- Concetto di inode in Linux
Spero che tu abbia imparato a usare il comando ln in modo efficace in questo tutorial. Domande e suggerimenti sono sempre ben accetti.