Трассировка маршрута символической ссылки

Я хочу разрешить символическую ссылку с дополнительной опцией для печати всей ссылки. Например, я хочу запустить команду типа readlink -f "symlink2" которая сообщает о каждой записи readlink -f "symlink2" . Другими словами, если вы решите символическую ссылку «symlink2-> symlink1 -> / path / file», то результатом команды выше является «/ path / file», и я прокручиваю вывод, например:

 $readlink -f "symlink2 symlink1 /path/file 

  • Возможности исполняемой символической ссылки на неисполняемый файл в Linux?
  • «Связанные» символические ссылки
  • Как создать ссылки на файловую систему vfat на смонтированном диске под Linux?
  • Сделать ярлык для программы, которая меняет ее каталог
  • Символическая ссылка на ~ / вместо ~ /
  • Как я могу получить вывод `ls -l` для ссылки рекурсивно, пока не достигнут исходный файл?
  • Что такое точка точка (..)? Почему его поведение отличается от символических ссылок?
  • Как редактировать символические ссылки?
  • 2 Solutions collect form web for “Трассировка маршрута символической ссылки”

    Один из способов сделать это – создать собственную рекурсивную readlink .

     function readlinkWithPrint() { link=`readlink "$@"` [ -e "$link" ] && echo "$link" [ -h "$link" ] && readlinkWithPrint "$link" } 

    Вот тест:

     $ touch file $ ln -s file symlink1 $ ln -s symlink1 symlink2 $ readlinkWithPrint symlink2 symlink1 file 

    К сожалению, эта функция довольно простая; параметры, которые вы предоставляете frist readlink , не будут распространяться на остальные, плюс вы не сможете прочитать несколько файлов.

    Я думаю, что вы ищете namei , которое является частью пакета util-linux, доступным для каждой не встроенной системы Linux.

    См. Эту тему относительно эквивалента для macOS. Исходный код должен быть в основном переносимым, если вам это нужно в другом варианте Unix.

    Linux и Unix - лучшая ОС в мире.