Anni fa, quando ho iniziato con Linux e ho indossato abiti da uomo più giovane, una delle cose più difficili da capire per me su Linux era il concetto di collegamenti simbolici e il loro utilizzo nell'ambiente Linux.
Ora, quasi due decenni dopo, finalmente lo capisco. In questo articolo cercherò di spiegare esattamente cos'è un collegamento simbolico, le differenze tra un collegamento fisico e un collegamento simbolico, o collegamento simbolico, come creare e rimuovere entrambi i tipi e il loro valore nell'ambiente Linux.
Cos'è un hard link?
Nei sistemi operativi Linux e simili a Linux, praticamente tutto è un file. Con questo in mente, in Linux, un file è solo un collegamento a un inode. Un inode è una struttura di dati che mantiene tutto ciò che riguarda un file separato dal suo nome e dal contenuto effettivo.
Ad alcuni utenti Linux piace pensare a un collegamento fisico come un nome aggiuntivo per un file esistente. Quindi, quando crei un collegamento reale, stai semplicemente associando due o più nomi di file allo stesso inode.
Per gli utenti che hanno più familiarità con Windows, un hard link Linux è molto simile a un hard link Windows che crei con il comando DOS:
C:/> mklink /h "link" "target"
Sembra un concetto problematico. Vediamo se creiamo un hard link nel terminale Linux; rende le cose più chiare.
Come creare un Hard Link
Utilizziamo ln comando per creare file di collegamento in Linux. Il formato del comando ln per creare un collegamento fisico è:
# ln "source" "link" # ln "/path/to/source" "/path to link" # ln "target" "link" # ln "target" "directory"
Dove "source" è un file esistente e "link" è il file da creare o il nostro hard link.
Quindi, nel seguente esempio, andremo a
Crea il nostro file "sorgente".
# echo 'This is the FOSS Linux Hard Link example' > FOSS
Crea il nostro file "link".
# ln FOSS Linux
Elenca il nostro file "sorgente" creato (FOSS) e il nostro "file di collegamento" (Linux).
# ls -li FOSS Linux
Se guardi il nostro output dai nostri ls comando, possiamo vedere che gli inode corrispondono. Abbiamo usato -i opzione specificatamente con il nostro comando ls in modo da poter vedere gli inode dei nostri file, in questo caso, 9448255 , per entrambi. Ricorda, con collegamenti reali; stiamo "solo associando due o più nomi di file con lo stesso inode".
Inoltre, nota che la terza colonna del nostro output mostra il numero 2 . Questo è il numero totale di collegamenti reali al file. Qui, 2 .
Si noti che non è possibile creare collegamenti reali per una directory. Quindi, ad esempio, non puoi creare un hard link per fare riferimento alla directory /home/tut . Non puoi nemmeno creare collegamenti reali per directory e file su un filesystem o una partizione diversi.
Cos'è un collegamento simbolico?
I collegamenti simbolici o simbolici (a volte chiamati collegamenti morbidi) erano molto più facili da digerire per me rispetto ai collegamenti reali. Per ottenere l'essenza di un collegamento simbolico, pensa a un collegamento di Windows. Che tutto un collegamento simbolico sia un puntatore (o collegamento) al file effettivo. A differenza dei collegamenti reali, i collegamenti simbolici non sono due file che fanno riferimento allo stesso inode. Invece, il collegamento simbolico è solo una "scorciatoia" al file vero e proprio.
Creiamo un esempio di collegamento simbolico ed esploriamo cosa intendo.
Come creare un collegamento simbolico
Proprio come con un hard link, utilizziamo ln comando per creare un collegamento simbolico. Solo per creare il collegamento simbolico, utilizziamo i -s qualificatore (ln -s ) per specificare che il collegamento che stiamo creando è un collegamento simbolico.
Creiamo un collegamento simbolico. Ti ricorderai da dove eravamo rimasti con i nostri file hard link in precedenza. Ci costruiremo su questo.
Creiamo il nostro file di collegamento simbolico.
# ln -s FOSS Is_Great
Ora esamineremo i nostri file.
# ls -li FOSS Linux Is_Great
Osservando il nostro output aggiornato dai nostri ls modificati comando, possiamo vedere che non è cambiato nulla con i nostri collegamenti fisici, ma il nostro collegamento simbolico è ora incluso. L'inode del nostro nuovo file è diverso dai nostri due collegamenti fisici e la seconda colonna inizia con una l . Il l denota che il file è un collegamento simbolico. Puoi vedere che il collegamento simbolico (o collegamento) appena creato punta al file per cui è un collegamento simbolico. Qui, FOSS (È_fantastico> FOSS ).
Conclusione
Si spera che, dopo aver letto il nostro articolo, tu abbia una migliore comprensione dei collegamenti reali e dei collegamenti simbolici o dei collegamenti simbolici. In caso di problemi, non posso consigliare ln man abbastanza pagina.
In caso di domande, chiedi nei commenti qui sotto e ti ricontatteremo.