I collegamenti simbolici sono file che si collegano direttamente ad altri file. Nei sistemi Linux, i collegamenti simbolici fungono da scorciatoie.
Il termine “collegamento simbolico” è una combinazione di “simbolico” e “collegamento”, evidenziando l’utilità di tali file come riferimenti simbolici ad altre cose.
I cosiddetti link “hard” funzionano più come copie dei file a cui fanno riferimento che come link letterali. I collegamenti “morbidi” o simbolici puntano semplicemente ai loro obiettivi. L’eliminazione di questi collegamenti non ha effetto sui file a cui puntano e per comodità è possibile creare tutti i collegamenti simbolici necessari. Questo li rende ottimi per puntare a file attraverso filesystem e partizioni allo stesso modo.
Usi dei collegamenti simbolici
Cambiare la struttura sottostante di un filesystem per una singola applicazione per funzionare in modo più efficiente sarebbe un lavoro serio. Invece, i collegamenti simbolici sono spesso usati per rendere le cose più semplici e creare gerarchie di file artificiali per i programmi a cui fare riferimento senza influenzare le posizioni dei file originali.
L’uso di collegamenti simbolici facilita l’adattamento di diversi programmi, ma complica anche l’analisi del file system.
Problemi con i collegamenti simbolici
Quando i collegamenti simbolici funzionano correttamente, descrivono un percorso chiaro a un file che esiste effettivamente. I collegamenti simbolici non riusciti, tuttavia, puntano a file che non esistono o sono stati eliminati. Questi collegamenti simbolici creano confusione sia per gli utenti umani che per i programmi che dipendono dalla loro accuratezza.
Se i file presi di mira dai collegamenti simbolici vengono scambiati, il collegamento stesso continua a puntare al nuovo file, ignorando completamente il suo contenuto. Questa funzionalità di fede cieca rende possibile il concatenamento di collegamenti e i collegamenti relativi.
Il concatenamento di collegamenti, in particolare, può portare a collegamenti ciclici (anelli di collegamento di lunghezza infinita) se un collegamento fa riferimento a un secondo collegamento che, a sua volta, rimanda al primo.
Tali enigmi non sono necessariamente causati dal solo intervento umano; standard di montaggio di dispositivi non ottimali e alcuni processi automatizzati possono contribuire a creare quelli che vengono definiti “collegamenti morti” in sfortunata abbondanza. È proprio qui che le tecniche di gestione tornano utili.
Gestione dei collegamenti simbolici
Nei sistemi Linux ci sono una varietà di utilità rese prontamente disponibili per la gestione dei collegamenti simbolici. Un’inclusione predefinita in coreutils è ln
, che facilita la creazione di tali collegamenti dal terminale.
Per gestire completamente i collegamenti simbolici, tuttavia, sarà necessario essere in grado di trovarli e analizzarli rapidamente. Una semplice opzione della riga di comando che vale la pena considerare per questo scopo è giustamente chiamata symlinks
.
Sebbene alcune distribuzioni Linux come Fedora vengano fornite con questo strumento installato di default, altre, come Ubuntu, non lo fanno. Per installare “Symlinks” in Ubuntu, apri semplicemente una finestra di terminale e inserisci quanto segue:
sudo apt install symlinks
Creazione di collegamenti simbolici
La creazione di collegamenti simbolici dal tuo terminale è facile in Linux. Immettere il codice che segue, cambiando “original-file.txt” con il nome e l’estensione del file del target scelto, quindi modificare “linkname” come si desidera che sia.
ln -s original-file.txt linkname

Il ln
è per creare collegamenti e lo farà quando lo si esegue. Il -s
incluso nel comando precedente rende simbolico il collegamento generato.
È anche possibile creare collegamenti simbolici relativi aggiungendo un file -r
allo stesso comando come segue:
ln -rs original-file.txt linkname

I collegamenti relativi rimangono funzionali indipendentemente dalle modifiche nei punti di montaggio.
Trovare collegamenti simbolici
L’utility Symlinks menzionata sopra ci fornisce un modo semplice per trovare collegamenti simbolici in una data directory. Il comando per questo è il seguente: (Cambia “nome-directory” nel percorso completo della directory in cui vuoi cercare.)
symlinks -v directory-name

Aggiungendo un file r
a questo comando dice a Symlinks di controllare ricorsivamente i file all’interno della directory specificata. Questo assomiglia al seguente:
symlinks -rv directory-name

Fai attenzione quando usi la ricorsione se sei preoccupato per i problemi che sorgono con i collegamenti ciclici. I collegamenti ciclici sono collegamenti che finiscono per ricollegarsi erroneamente a se stessi; possono causare il blocco dell’utilità Symlinks mentre tenta di ricorrere alla loro struttura infinita.
La versione non ricorsiva del comando mostrato sopra rivelerà semplicemente che qualsiasi collegamento ciclico esistente è “penzoloni” o, in altre parole, interrotto. È l’analisi di cui è capace lo strumento Symlinks che gli consente di correggere effettivamente tali collegamenti interrotti.
Correzione dei collegamenti simbolici
La correzione dei link simbolici in una data directory è relativamente semplice con Symlinks. Ecco il comando da usare:
symlinks -cds directory-name

Il comando sopra fa più cose contemporaneamente. Converte tutti i collegamenti assoluti che trova in collegamenti relativi, rimuove i collegamenti pendenti e accorcia i collegamenti “lunghi” (collegamenti con molti “../” nei loro percorsi).
Se non sei sicuro dei potenziali risultati dell’esecuzione di questa operazione, puoi provare cosa -c
da solo farebbe senza cambiare nulla eseguendo quanto segue:
symlinks -t directory-name

Si spera che ora tu abbia una migliore comprensione di cosa sono i collegamenti simbolici e di come puoi gestirli in modo efficiente. Controlla il resto del file Funzionalità dell’utilità Symlinks per eseguire operazioni più specifiche sul tuo filesystem.