Respostas:
link=/var/opt/foo
target=$(readlink "$link")
$target
agora é o destino do link, exatamente como foi armazenado no sistema de arquivos.
Os links simbólicos podem ser relativos, portanto, isso seria melhor para o uso normal:
target=$(readlink -f "$link")
Observe que isso é usado readlink
no GNU Coreutils, que pode não existir no BSD e em outros sistemas.
Editar: readlink -f
funciona em BSDs, desde que o destino do link exista. realpath
é outra ferramenta, somente BSD, que funciona de maneira semelhante.
-f
e readlink -f
funciona da mesma maneira (assumindo que o destino do link existe). No BSD, realpath
parece ser outra alternativa para readlink -m
.
readlink()
chamada do sistema desde os dias de 4.2BSD. Oreadlink
utilitário atual dos BSDs foi lançado com o FreeBSD 4.10. Foi (re) implementado como um link físico para ostat
comando ( página de manual do MacOS X Página de manual do FreeBSD 9 ). Observe que ele não tem uma-m
opção.