Abbiamo già discusso del comando ln, che consente di creare collegamenti tra file. Ma ci sono anche strumenti che ti permettono di risolvere questi link.
In questo tutorial, discuteremo le basi di realpath e link di lettura comandi simili (se non uguali) nel senso che mostrano collegamenti simbolici risolti nell'output. Ma prima di farlo, vale la pena ricordare che tutti gli esempi qui presenti sono stati testati su Ubuntu 18.04 LTS e su Debian 10.
Comandi Linux realpath e readlink
Come già accennato all'inizio, sia i comandi realpath che readlink mostrano il percorso risolto per i collegamenti simbolici nell'output.
Di seguito è riportata la loro sintassi:
realpath [OPTION]... FILE...
readlink [OPTION]... FILE...
Ed ecco cosa dicono le rispettive pagine man:
Print the resolved absolute file name
print resolved symbolic links or canonical file names
Di seguito sono riportati alcuni esempi in stile domande e risposte che dovrebbero darti un'idea migliore di come funzionano questi strumenti.
Q1. Come risolvere il percorso usando realpath e readlink?
Semplice, basta fornire il file o il percorso come input. L'esempio seguente mostra entrambi questi comandi che risolvono un collegamento simbolico.
Ed ecco come funzionano con i percorsi:
Quindi puoi vedere entrambi i comandi risolti con successo i collegamenti simbolici nei due casi.
Q2. Come stampare il percorso risolto relativo a una directory?
Il comando realpath ti consente di farlo facilmente. Ad esempio, supponiamo che questo sia ciò che stai cercando di fare:
realpath /var/local/Downloadslink
Tuttavia, un requisito aggiuntivo è avere l'output di questo comando relativo alla directory /home/himanshu. Quindi il comando che devi eseguire è il seguente:
realpath /var/local/Downloadslink --relative-to=/home/himanshu
Ecco l'output:
Downloads
Quindi puoi vedere che l'opzione '--relative-to' ti permetteva di avere un output relativo alla directory /home/himanshu.
T3. Come sbarazzarsi di .. nei percorsi?
Potrebbero esserci momenti in cui l'espansione/risoluzione dei collegamenti simbolici non è l'obiettivo, ma lo è sbarazzarsi di .. nel percorso. Il comando realpath ti consente di farlo.
Tutto quello che devi fare è usare l'opzione della riga di comando -s. Ecco un esempio:
realpath -s ../../var/local/Downloadslink
E di seguito è riportato l'output di questo comando:
/var/local/Downloadslink
Q4. Come modificare il carattere di delimitazione?
Per impostazione predefinita, la nuova riga viene utilizzata come carattere di delimitazione. Tuttavia, entrambi i comandi forniscono invece un modo per avere NUL come delimitatore.
L'opzione che devi usare in entrambi i casi è -z.
realpath -z [FILE/PATH]
readlink -z [FILE/PATH]
Conclusione
Ciò di cui abbiamo discusso qui sono solo una manciata di opzioni/funzionalità fornite da questi comandi. Una volta che hai finito di esercitarti, vai alle pagine man readlink e realpath (qui e qui) per saperne di più su questi strumenti.