Odpowiedzi:
link=/var/opt/foo
target=$(readlink "$link")
$target
jest teraz celem łącza, dokładnie tak, jak zostało zapisane w systemie plików.
Dowiązania symboliczne mogą być jednak względne, więc byłoby to lepsze w przypadku normalnego użytkowania:
target=$(readlink -f "$link")
Zauważ, że wykorzystuje to readlink
GNU Coreutils, które mogą nie istnieć w BSD i innych systemach.
Edycja: readlink -f
działa na BSD, o ile istnieje element docelowy łącza. realpath
to kolejne narzędzie tylko do BSD, które działa w podobny sposób.
-f
i readlink -f
działa równie dobrze (zakładając, że istnieje cel łącza). W BSD realpath
wydaje się być kolejną alternatywą dla readlink -m
.
readlink()
wywołanie systemowe od czasów 4.2BSD. Obecnereadlink
narzędzie BSD zostało wydane wraz z FreeBSD 4.10. Został (ponownie) zaimplementowany jako twardy link dostat
polecenia ( strona podręcznika MacOS X strona podręcznika FreeBSD 9 ). Zauważ, że nie ma takiej-m
opcji.