Linux non ha scorciatoie, ma ha collegamenti simbolici o collegamenti simbolici, come vengono solitamente chiamati. Ma cosa sono esattamente i link simbolici? E come si crea uno? Scopriamolo.
Proveremo i comandi su un’installazione di Ubuntu, anche se la sintassi funziona allo stesso modo su tutte le distribuzioni Linux. È interessante notare che i collegamenti simbolici possono anche essere creati su un PC Mac.
Sommario
Cosa sono i collegamenti simbolici?
Se vuoi essere in grado di accedere a un file da più posizioni, semplicemente copiarlo non è una buona soluzione. Stai sprecando spazio su disco, per non parlare del fatto che è difficile tenere traccia delle modifiche a causa della presenza di più file.
In una GUI basato sul sistema operativo, lo supereresti creando scorciatoie. Per un sistema operativo basato su CUI (come qualsiasi distribuzione Linux), la risposta è un collegamento simbolico. Anche Microsoft Windows può sfruttare i collegamenti simbolici in alcune situazioni.
Un collegamento simbolico o un collegamento simbolico è solo un file che punta a un altro file o directory, anche in un file system o partizione completamente diverso. L’apertura del collegamento simbolico consente di accedere allo stesso file originale, con eventuali modifiche riflesse anche nel file principale.
Questo vale anche per i permessi: l’uso di chmod per modificare i permessi di un file di collegamento simbolico modificherà effettivamente i permessi del file di destinazione.
Tipi di collegamenti simbolici
I collegamenti simbolici sono anche noti come collegamenti software. Come potrebbe suggerire il nome, non è l’unico tipo di sistema di collegamento file su Linux. I collegamenti fisici possono essere utilizzati come alternativa ai collegamenti simbolici in determinati scenari, sebbene vengano forniti con una serie di restrizioni.
Per cominciare, duro i collegamenti sono semplicemente nomi di file che puntano allo stesso inode. Sebbene ciò li renda molto efficienti in termini di archiviazione e velocità di accesso, li limita anche ai file nello stesso file system o partizione. E a causa di una stranezza di come funziona l’accesso alle cartelle in Linux, non è possibile utilizzare nemmeno i collegamenti reali per le directory.
I collegamenti software o i collegamenti simbolici, d’altra parte, sono più simili ai collegamenti sul desktop. Ogni soft link è essenzialmente un piccolo file che punta ai dati originali, senza essere direttamente collegato ad essi. Ciò significa che i soft link possono facilmente puntare a file e directory su altre partizioni e file system senza alcuna restrizione.
Hard Link VS Soft Link: quale tipo utilizzare?
I soft link sono la forma più versatile di link poiché possono essere utilizzati sia su file che su directory su più file system senza alcuna restrizione. Ma allora perché abbiamo anche collegamenti reali? Ti offrono qualche vantaggio rispetto ai collegamenti simbolici?
Bene, sulla carta, gli hard link sono più efficienti. Poiché utilizzano gli stessi inode, non occupano spazio su disco aggiuntivo e sono accessibili molto più velocemente dei soft link. Questo è il motivo per cui molti amministratori di sistema consiglieranno di utilizzare i collegamenti reali ogni volta che è possibile.
Detto questo, tuttavia, gli svantaggi dell’utilizzo di collegamenti simbolici sono minimi. I computer moderni in particolare non si preoccupano davvero di qualche kilobyte di spazio di archiviazione aggiuntivo e, a meno che non si stia riempiendo il sistema con milioni di collegamenti software, la dimensione aggiuntiva del file raramente conta.
Creazione di collegamenti simbolici
I collegamenti simbolici, o meglio, i collegamenti ai file in generale, vengono creati utilizzando il comando ln. Per impostazione predefinita, il comando crea collegamenti reali. Per creare un collegamento simbolico, devi aggiungere il flag-s al comando ln.
La sintassi è abbastanza semplice. Il comando ln accetta due parametri: il percorso del file (o cartella) da collegare e il percorso del file di collegamento da creare.
In questo modo:
ln-s user_names.txt nomi
Questo creerà un collegamento simbolico chiamato names collegato al file di testo user_names. Per vedere se il collegamento simbolico è stato effettivamente creato, basta usare il comando ls.
Come puoi vedere, Ubuntu mostra colori diversi per diverse categorie di file, con directory denotate da blu scuro e collegamenti simbolici con un colore blu più chiaro (ciano, in realtà).
Possiamo utilizzare la stessa sintassi anche per creare un collegamento simbolico per la cartella:
ln-s examples example_folder
Per creare collegamenti simbolici a file e cartelle in altre directory, usa semplicemente il loro percorso completo. Ad esempio:
ln-s examples/example3.txt distance_example
Limitazioni dei collegamenti simbolici
I collegamenti simbolici sono un ottimo modo per connettersi file in tutto il sistema senza dover ricorrere alla creazione di copie, ma hanno i propri limiti. Sì, anche se i soft link sono meno restrittivi degli hard link, ci sono comunque alcune cose da tenere a mente.
In primo luogo, il comando ln in realtà non verifica i collegamenti creati. Ciò significa che è possibile inserire un nome file che in realtà non esiste e non si otterranno errori. L’unico modo per confermare il collegamento è provare a usarlo e vedere se porta al file corretto.
In secondo luogo, mentre l’accesso o la modifica delle autorizzazioni del collegamento simbolico modifica le proprietà del file originale, lo stesso non vale per l’eliminazione del file. È possibile rimuovere in modo sicuro il collegamento simbolico senza influire sul file o sulla directory collegati.
Creare collegamenti simbolici in Linux
Il problema più grande nell’usare il terminale per creare collegamenti simbolici è la difficoltà nell’accedere a file importanti sparsi in varie directory. La soluzione intelligente è creare collegamenti simbolici a tali file dalla stessa directory home, come i collegamenti sul desktop.
E a differenza dei collegamenti fisici, i collegamenti simbolici possono essere creati facilmente senza alcuna restrizione, anche per la connessione a directory o file in diverse partizioni e file system. Tieni presente che questo significa anche che un collegamento simbolico potrebbe puntare a un file inesistente: dovrai provare ad accedere al collegamento per verificare se il file esiste.