Как найти конечную цель цепочки символических ссылок?

Мне нужно было выполнить несколько команд, чтобы следовать цепочке символических ссылок к конечной цели.

Есть ли команда, которая сделает это за один шаг?

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  
6
задан 17 December 2010 в 00:21

2 ответа

Используйте readlink -e <linkfile>. Для получения дополнительной информации об аргументах см. Справочную страницу readlink

0
ответ дан 17 December 2010 в 00:21

Вы можете использовать readlink -e, как указано в @htorque, который устанавливается по умолчанию. Однако, если вы сделали что-то вроде ln -s a a, то readlink -e a не будет выводить вообще, что аналогично тому, как вы делаете readlink b, когда b является нормальным файлом.

Если вы установите пакет chase (sudo apt-get install chase, названный «преследование символических ссылок»), вы получите гораздо более информативный вывод.

$ chase a
chase: /tmp/a: symlink loop detected, giving up...
$ chase b
/tmp/b

, и вы можете запустить его подробно:

$ chase --verbose /opt/python/3
/opt/python/3
-> 3.6
-> 3.6.2
/opt/python/3.6.2

, который показывает промежуточные звенья

0
ответ дан 17 December 2010 в 00:21

Другие вопросы по тегам:

Похожие вопросы: