ln

63 / 100
()

Creare un collegamento al file o alla cartella

Il comando ln (abbreviazione di link) genera un collegamento a un file o a una cartella. Così viene generato un’ulteriore voce per questo file che vi consente di accedere al file relativo tramite un altro percorso.

Il programma della riga di comando ln deve almeno sempre contenere il percorso al file originario.

ln [OPZIONI] percorso/al/file/originario

Il link viene creato, in questo caso, con lo stesso nome nella cartella in cui si sta lavorando.

Alternativamente avete la possibilità di indicare un percorso di destinazione e di dare un qualsiasi nome al collegamento:

ln [OPZIONI] percorso/al/file/originario percorso/al/collegamento

ln crea nelle impostazioni standard i cosiddetti hard link che non sono però adatti a creare collegamenti alle cartelle. Inoltre non si possono utilizzare gli hard link oltre i limiti di partizione. Il comando viene utilizzato quindi spesso con l’OPZIONE -s (–symbolic) con cui si possono creare anche oltre i limiti del file system. I link simbolici rimandano sempre a un “vero” percorso del file e ne sono dipendenti.

Cosa sono gli hard e i soft link?

Per essere in grado di usare il comando ln in modo sensato e specifico con Linux, è necessario conoscere la differenza tra soft e hard link: i soft link sono riferimenti incrociati che rimandano a un file originale tramite un percorso di riferimento.

Se il file originale viene cancellato o spostato, l’oggetto di destinazione non esiste più e il rimando non porta a niente.

Cancellando solo il soft link, invece, il file originale viene mantenuto e viene rimosso solo il riferimento a esso. I soft link sono anche chiamati link simbolici o (abbreviato) symlink.

I soft link possono essere creati non solo con il comando ln nel terminale di Linux, ma anche con funzioni dell’interfaccia grafica, per esempio nel file manager di Linux. Nell’interfaccia grafica di Linux, i soft link sono riconoscibili grazie al simbolo della freccia in aggiunta all’icona del file.

Gli hard link sono collegamenti fisici che possono essere creati solo tramite la riga di comando.

Sono integrati in maniera più estesa dei soft link nella gestione della memoria di un sistema operativo e nel rispettivo file system.

Un hard link è una voce di directory aggiuntiva per un file originale, anche se diversi hard link possono indirizzare allo stesso file. In sostanza, Linux non distingue tecnicamente e operativamente tra il link originale o originario (link primario) e un hard link generato successivamente (link successivo e secondario).

Di conseguenza, tutte le voci dell’elenco hanno gli stessi diritti e funzionano in modo indipendente l’una dall’altra. Un hard link può consentire l’accesso a un file in diverse posizioni, operazione spesso utilizzata per i backup.

È possibile spiegare meglio le caratteristiche speciali e la modalità di funzionamento degli hard link facendo un esempio concreto. Un file video che inizialmente è accessibile solo nella directory “I miei video” può anche essere accessibile tramite la directory “I miei video – Backup” dopo avere creato un hard link. Cancellando il file originale in “I miei video” (ovvero cancellando solo il collegamento primario al file video), si può ancora accedere senza problemi al file tramite l’accesso parallelo equivalente (percorso hard link al file nella directory “I miei video – Backup”). Gli hard link hanno il vantaggio che una voce in più nella gestione dell’archiviazione non occupa il doppio dello spazio di archiviazione. Si tratta semplicemente di opzioni di accesso alternative (tramite il percorso del file) che non rappresentano una seconda copia fisica completa di un file.

Gli hard link in ambiente Linux sono strettamente legati a una speciale gestione interna. Ogni hard link si riferisce a un cosiddetto inode ed è assegnato a un numero di inode distintivo e unico, assegnato anche al file originale. Un file viene definitivamente cancellato nella gestione degli inode, e quindi anche nel sistema, solo quando tutte le voci (cioè tutti i riferimenti a esso) sono stati dichiarate non valide dalle operazioni di cancellazione e dopo l’azzeramento di un contatore di collegamenti interni. Ma se le voci di indirizzo sono molte e ne viene cancellata solo una o se il file originale viene spostato in un’altra directory, non avverrà alcun cambiamento. Le restanti opzioni memorizzate nell’inode per accedere al file originale dell’applicazione rimangono valide.

Come viene usato nella pratica il comando ln?

Di seguito, vi presentiamo alcuni semplici esempi di applicazione per la creazione di collegamenti in ambiente Linux. La sintassi del comando è indicata per importanti compiti di routine che si verificano regolarmente. Naturalmente, il comando ln può anche eseguire azioni di collegamento più complesse, anche se questo richiede un po’ di pratica nell’uso della riga di comando, oltre che la formulazione di un codice più complesso.

Creare un hard link nella stessa directory

Per impostazione predefinita, senza opzioni ulteriori, il comando ln serve a creare collegamenti fisici sotto forma di hard link. È necessario attenersi a questo formato di comando:

ln percorso del file di destinazione riferimento

Il codice seguente crea un hard link a un file video (video.mp4) nel profilo utente Linux corrente “Peter” (/home/peter/). Il file sorgente e l’hard link creato si trovano nella stessa directory per i video. L’hard link può anche essere spostato in seguito senza problemi, se necessario, senza che perda la sua validità.

ln /home/peter/videos/video.mp4 hardlink_al_file_video

Creare un hard link in un’altra directory

Se si vuole creare un collegamento al file video sul desktop di Linux, è necessario formulare questo comando:

ln /home/peter/videos/video.mp4 /home/peter/Desktop/hardlink_al_file_video

Creare un soft link per i file

Se volete creare un soft link con il comando ln, dovete aggiungere l’opzione “-s” (s = symbolic) al comando. Il formato del comando per un soft link è:

ln -s percorso del file di destinazione riferimento

In questo esempio, il soft link viene creato nella stessa cartella:

ln -s /home/peter/video.mp4 softlink_al_file_video

Creare un soft link in un’altra directory

Potete anche creare dei soft link in altre directory, per esempio sul desktop:

ln -s /home/peter/videos/video.mp4 /home/peter/Desktop/softlink_al_file_video

Un’azione di collegamento più complessa può essere realizzata con l’opzione “-t” (t = target directory) e ulteriore codice:

ls Fattura* | xargs ln -s -t /home/peter/Desktop/

La sintassi del comando crea collegamenti a tutti i file Fattura* situati nella directory di origine e li colloca nella directory del desktop. L’asterisco (*) assicura che siano inclusi tutti i file il cui nome inizia con la parola “Fattura” (per esempio Fattura_di_gennaioFattura_di_febbraio, ecc.).

Se desiderate avere un migliore controllo sulle azioni di collegamento e visualizzare informazioni aggiuntive, l’opzione “-v” (v = verbose) può esservi di grande aiuto. Con questa viene mostrato un elenco di ogni file collegato, il che è particolarmente utile per azioni di collegamento più estese:

ln -s -v /home/peter/videos/movie.mp4 /home/peter/Desktop/softlink_al_file_video

I soft link possono essere cancellati con lo speciale comando Linux “rm” (rm = remove). Con il seguente codice è possibile cancellare un soft link al file video nella directory di lavoro corrente:

rm softlink_al_file_video

Per eliminare più file video nella directory di lavoro corrente in un solo passaggio, questi devono essere elencati uno dopo l’altro e separati da uno spazio:

rm softlink_Video1 softlink_Video2 softlink_Video3 softlink_Video4

L’ opzione “-r” (r = recursive) permette di cancellare tutti i file soft link all’interno di una cartella soft link. Se ci sono ancora delle sottocartelle, anche queste saranno cancellate:

rm -r ~/Desktop/Cartella-Softlink/*

Creare un soft link per le directory

Il codice seguente non collega un file, bensì una directory. Con la seguente sintassi di comando è possibile collocare sul desktop un soft link per la cartella video:

ln -s /home/peter/videos/ /home/peter/Desktop/softlink_per_cartella-video

Non è sempre necessario usare le specifiche del percorso completo (percorsi assoluti) quando si creano collegamenti in ambiente Linux. La shell di Linux e il comando ln accettano anche specifiche di percorsi relativi e scorciatoie. Per esempio, una tilde (~) rappresenta il percorso assoluto della directory home dell’utente corrente (nel nostro esempio: /home/peter/). Il codice di un soft link che conduce alla directory dei video sul desktop (ovvero: /home/peter/videos/) si presenta così:

ln -s ~/videos ~/Desktop/softlink_per_cartella-video

How useful was this post?

Click on a star to rate it!

Average rating / 5. Vote count:

No votes so far! Be the first to rate this post.

As you found this post useful...

Follow us on social media!

We are sorry that this post was not useful for you!

Let us improve this post!

Tell us how we can improve this post?