Articolo originale: Symlink Tutorial in Linux – How to Create and Remove a Symbolic Link

Un link simbolico (o symlink) è un tipo di file in Linux che punta a un altro file o a un'altra cartella all'interno del tuo computer. I link simbolici assomigliano alle scorciatoie di Windows.

I link simbolici vengono chiamati da alcuni "link soft", morbidi - un tipo di link nei sistemi Linux/UNIX - in opposizione ai link "hard", duri.

I link soft sono simili alle scorciatoie, possono puntare a un altro file o a un'altra cartella in qualsiasi file system.

Anche i link hard sono scorciatoie per file o cartelle, ma un link hard non può essere creato puntando a un file o a una cartella in un file system diverso.

Ecco i passi per creare e rimuovere un link simbolico. Vedremo anche cosa sono i link interrotti e come cancellarli.

La sintassi per creare un link simbolico è:

ln -s <percorso del file/cartella da collegare> <percorso del link da creare>

ln è il comando. La -s specifica che il link deve essere soft. -s può essere scritto anche -symbolic.

ln è il comando predefinito per creare link hard. L'argomento successivo è il percorso del file (o cartella) che vuoi collegare (cioè il file o la cartella per cui vuoi creare una scorciatoia).

E l'ultimo argomento è il percorso del collegamento (la scorciatoia).

ln -s /home/james/transactions.txt trans.txt

Dopo aver eseguito questo comando, sarai in grado di accedere al file /home/james/transactions.txt con trans.txt. Ogni modifica a trans.txt si rifletterà nel file originale.

Nota che il comando crea il file di collegamento trans.txt nella cartella in cui ti trovi. Allo stesso modo puoi creare un file di collegamento all'interno di una cartella:

ln -s /home/james/transactions.txt my-stuffs/trans.txt

Una cartella chiamata "my-stuffs" deve essere già presente nella cartella in cui ti trovi - altrimenti il comando ti darà un errore.

Similmente a quanto visto sopra useremo:

ln -s /home/james james

Questo crea una cartella di collegamento simbolico chiamata "james", che conterrà quel che già si trova in /home/james. Qualsiasi cambiamento alla cartella di collegamento, modificherà anche la cartella originale.

Prima di voler rimuovere un symlink, è meglio avere la sicurezza che quel file o quella cartella siano un link simbolico, per evitare di manomettere i file.

Un modo è questo:

ls -l <percorso del probabile link simbolico>

Eseguendo il comando sul tuo terminale, verranno visualizzate le proprietà del file. Nel risultato, se il primo carattere è una lettera L minuscola ("l"), allora il file/cartella è un link simbolico.

Vedrai anche una freccia (->) alla fine, che indica il file/cartella a cui punta il link.

Ci sono due metodi per rimuovere un link simbolico:

La sintassi è:

unlink <percorso del link simbolico>

Questo comando cancella il link simbolico, se il processo è valido.

Anche se il link simbolico è una cartella, non aggiungere "/", perché Linux assumerà che sia una cartella e unlink non può cancellare cartelle.

Come abbiamo visto, un link simbolico è solo un altro file o un'altra cartella che punta a un file originale o a una cartella originale. Per rimuovere questa relazione, puoi rimuovere il file collegato.

Quindi, la sintassi è:

rm <percorso del link simbolico>

Per esempio:

rm trans.txt
rm james

Nota che cercare di eseguire rm james/ darebbe un errore, perché Linux assumerà che "james/" sia una cartella. Ciò richiederebbe altre opzioni, come  r e f. Ma non è quello che vogliamo. Un link simbolico può essere una cartella, ma a noi interessa solo il nome.

Il principale vantaggio di rm su unlink è che permette di rimuovere più link simbolici in una volta, come si può fare coi file.

I link simbolici interrotti sono quei link che puntano a un file o a una cartella il cui percorso è stato modificato o cancellato.

Per esempio, se "transactions.txt" si sposta da /home/james a /home/james/personal, il link "trans.txt" viene interrotto. Qualsiasi tentativo di accedere al file dà luogo al messaggio di errore "No such file or directory". Succede perché il link simbolico non ha un proprio contenuto.

Quando scopri link interrotti, puoi facilmente cancellare il file. Un modo semplice di trovare i link simbolici interrotti è:

find /home/james -xtype l

Questo comando darà l'elenco di tutti i link simbolici interrotti nella cartella james – dai file alle cartelle alle sottocartelle.

Passando l'opzione -delete li cancellerai:

find /home/james -xtype l -delete

In conclusione

I link simbolici sono una caratteristica interessante dei sistemi Linux e UNIX.

Puoi creare dei link simbolici facilmente accessibili per rinviare a file o cartelle che altrimenti non sarebbe comodo raggiungere. Con un po' di allenamento, capirai intuitivamente come funzionano, e renderanno la gestione dei tuoi file molto più efficiente.