Réponses:
link=/var/opt/foo
target=$(readlink "$link")
$target
est désormais la cible du lien, exactement comme il était stocké dans le système de fichiers.
Les liens symboliques peuvent être relatifs, cependant, ce serait mieux pour une utilisation normale:
target=$(readlink -f "$link")
Notez que cela utilise readlink
de GNU Coreutils, qui peut ne pas exister dans BSD et d'autres systèmes.
Edit: readlink -f
fonctionne sur les BSD, tant que la cible du lien existe. realpath
est un autre outil, uniquement BSD, qui fonctionne de manière similaire.
-f
et readlink -f
fonctionne aussi bien (en supposant que la cible du lien existe). Dans BSD, realpath
semble être une autre alternative à readlink -m
.
readlink()
appel système depuis l'époque de 4.2BSD. L'readlink
utilitaire BSD actuel a été publié avec FreeBSD 4.10. Il a été (re) implémenté en tant que lien dur pour lastat
commande ( page de manuel MacOS X page de manuel FreeBSD 9 ). Notez qu'il n'a pas d'-m
option.