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


6

Предположим, у меня есть ссылка, которая указывает на другую ссылку, которая указывает на другую ссылку и т. Д. Вниз по линии. Я не уверен, сколько уровней ссылок. Какой удобный способ командной строки увидеть конечную цель всех этих ссылок?

Ответы:


7

Некоторые версии readlinkподдерживают -fвозможность следовать цепочке до конца. Тот, что на моей коробке Debian, делает. Тот, что на моем Mac OS, не имеет (но затем он переопределяется тем, что предоставляется fink, который делает).


4

Может быть, это не лучшее решение, это зависит от ваших потребностей. Вы можете получить индекс конца цепочки с помощью:

stat -Lc '%i' the-link

и если вам нужен путь к этим файлам (более одного, если концы цепочки жестко связаны друг с другом):

find /search/path/ `stat -Lc '%i' the-link`

Хорошо, есть более разумное решение:

readlink -f the-file

1

Смотрите мои ответы здесь и здесь для небольших функций, которые вы можете использовать в качестве отправной точки для выполнения того, что вы хотите, если вы хотите видеть все промежуточные ссылки.



0

Если вы хотите более кроссплатформенное решение, вы можете использовать:

#!/usr/bin/env bash
s=/path/to/file
while [ -h $s ]; do s="$(readlink "$s")"; done
echo $s

Кажется не элегантным, но, как утверждает dmckee, в Mac OS X эта -fопция не включена readlink.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.