In questo breve tutorial, esamineremo le basi dei collegamenti simbolici in Linux e creeremo un semplice script bash per ottenere il bersaglio del collegamento simbolico.
Tipi di collegamenti simbolici
Esistono principalmente due tipi di collegamenti simbolici, vale a dire:
Collegamenti duri:
I collegamenti duri sono puntatori diretti a un file o directory all'interno di un filesystem. I collegamenti difficili sono creabili solo nello stesso filesystem del file di destinazione.
Link soft:
D'altra parte, i collegamenti soft sono scorciatoie indirette per un file o una directory e possono esistere ovunque all'interno di un filesystem. I collegamenti soft possono indicare il file in un file di file diverso.
Come creare collegamenti simbolici
Per creare un collegamento simbolico in Linux, utilizziamo il comando LN. L'esecuzione del comando senza opzioni crea un collegamento duro al file di destinazione specificato.
La sintassi generale per il comando LN è:
ln [opzioni]
Come accennato, il comando sopra creerà un collegamento difficile al file di destinazione. Per creare un collegamento simbolico morbido, utilizzare l'opzione -s come:
ln -s [opzione]
Esempio 1
Prendiamo l'auth del file.Accedi /var /log. Possiamo creare un collegamento al file nella nostra home directory usando il comando come:
ln -s/var/log/auth.Auth registri.tronco d'albero
Il comando sopra creerà un collegamento che punta al file principale. Possiamo verificarlo usando il comando LS:
ls -la
Esempio n. 2
Puoi anche eseguire un'operazione simile su una directory. Per creare un collegamento a /var /log, utilizziamo il comando:
ln -s /var /log log
Allo stesso modo, viene creato un collegamento soft che punta alla directory target /var /log:
ls -la
Come rimuovere i collegamenti simbolici
Per rimuovere un collegamento simbolico, utilizziamo il comando Unkink seguito dal percorso del collegamento simbolico per rimuovere.
Per esempio:
UNLINK ~/LOG
NOTA: Se si elimina il file o la directory di destinazione, rimuovere il collegamento simbolico perché lasciarlo crea un collegamento rotto.
Come ottenere il file di destinazione o la directory del collegamento simbolico
Ogni collegamento simbolico indica un file o una directory di destinazione (a meno che non sia stato rotto). Per recuperare il file/directory di destinazione di un collegamento simbolico, utilizziamo questo comando che mostra il bersaglio di un collegamento simbolico.
Ad esempio, per ottenere l'obiettivo dell'autenticazione.file di registro creato in una sezione precedente, possiamo fare:
Auth readlink.tronco d'albero
/val/log/autentica.tronco d'albero
Una semplice sceneggiatura da bash per ottenere collegamenti simbolici
Usando i concetti sopra, possiamo assemblare un semplice script bash che accetta un percorso ed elenca tutti i collegamenti simil e i loro file di destinazione o directory.
Un semplice script come quello fornito di seguito dovrebbe fare il trucco.
#!/Bin/Bash
Echo "Fornisci la directory per valutare:"
Leggi Target_dir
CD $ target_dir
links = $ (trova . -maxdepth1 -ype l -ls | awk 'stampa $ 11')
per link nei collegamenti
Fare
echo "$ link -> $ (readlink $ link)"
Fatto
Lo script inizia chiedendo all'utente la directory di valutare. Quindi, lo script va alla directory fornita e trova tutti i collegamenti simbolici all'interno della directory e passa l'output su AWK.
AWK analizza l'output e individua solo i collegamenti simbolici e li salva a una variabile chiamata collegamenti.
Creiamo quindi un ciclo che afferra ogni collegamento nei collegamenti e valuta il loro valore target utilizzando il comando ReadLink.
Infine, facciamo eco al legame simbolico e alla directory target. Di seguito è riportato un output di esempio:
Nell'esempio sopra, troviamo tutti i collegamenti simil nella directory /etc e stampiamo il loro file o la directory di destinazione.
Conclusione
In questo tutorial, abbiamo discusso delle basi dell'uso di collegamenti simbolici in Linux. Abbiamo quindi creato un semplice script per trovare collegamenti simbolici in una directory specificata e mostrare la loro fonte e target.
Grazie per aver letto!