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

6

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

питоническая метафора
источник

Ответы:

7

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

dmckee
источник
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.

CASR
источник