Use readlink -e <linkfile>
. Consulte a página de manual do readlink para obter mais informações sobre seus argumentos.
Eu precisava emitir vários comandos para seguir uma cadeia de links simbólicos para o destino final.
Existe um comando que fará isso em uma única etapa?
which updatedb
/usr/bin/updatedb
ls -l /usr/bin/updatedb
lrwxrwxrwx 1 root root 26 2010-09-01 16:22 /usr/bin/updatedb -> /etc/alternatives/updatedb
ls -l /etc/alternatives/updatedb
lrwxrwxrwx 1 root root 25 2010-09-01 16:21 /etc/alternatives/updatedb -> /usr/bin/updatedb.mlocate
ls -l /usr/bin/updatedb.mlocate
-rwxr-xr-x 1 root root 34492 2010-03-24 21:16 /usr/bin/updatedb.mlocate
Use readlink -e <linkfile>
. Consulte a página de manual do readlink para obter mais informações sobre seus argumentos.
Você pode usar readlink -e
, como mencionado em @htorque, que é instalado por padrão. No entanto, se você tiver feito algo como ln -s a a
, então readlink -e a
não fornecerá nenhuma saída, o que é o mesmo de quando você faz readlink b
quando b
é um arquivo normal.
Se você instalar o pacote chase
( sudo apt-get install chase
, nomeado para "perseguir links simbólicos"), obterá uma saída muito mais informativa.
$ chase a
chase: /tmp/a: symlink loop detected, giving up...
$ chase b
/tmp/b
e você pode executá-lo detalhadamente:
$ chase --verbose /opt/python/3
/opt/python/3
-> 3.6
-> 3.6.2
/opt/python/3.6.2
que mostra os links intermediários
Tags symbolic-link