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 readlinkde 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. realpathest un autre outil, uniquement BSD, qui fonctionne de manière similaire.
-fet readlink -ffonctionne aussi bien (en supposant que la cible du lien existe). Dans BSD, realpathsemble être une autre alternative à readlink -m.
readlink()appel système depuis l'époque de 4.2BSD. L'readlinkutilitaire BSD actuel a été publié avec FreeBSD 4.10. Il a été (re) implémenté en tant que lien dur pour lastatcommande ( page de manuel MacOS X page de manuel FreeBSD 9 ). Notez qu'il n'a pas d'-moption.