Есть ли способ увидеть фактическое содержание символической ссылки? - PullRequest
36 голосов
/ 01 января 2011

Когда вы делаете

cat some-symlink-to-some-real-file

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

Ответы [ 4 ]

44 голосов
/ 01 января 2011

Команда ls -l покажет вам, что:

$ ls -l foo
lrwxrwxrwx 1 user group 11 2010-12-31 19:49 foo -> /etc/passwd

Или команда readlink :

$ readlink foo
/etc/passwd

Итак, символическая ссылка foo указывает на путь /etc/passwd.

7 голосов
/ 01 января 2011

Вы можете вызвать функцию readlink(2), которая поместит связанное имя в буфер.

Обратите внимание, что результат имеет длину (сохраненную в возвращаемом значении), а не завершается NUL. Поэтому, если вы хотите использовать его в качестве строки, добавьте NUL самостоятельно.

Большинство языков высокого уровня / сценариев, таких как perl или python, предоставляют оболочку readlink, которая преобразуется в обычный тип строки, соответствующий языку, поэтому вас не будут беспокоить такие детали, как NUL-завершение.

2 голосов
/ 22 марта 2015

Относительно справочной страницы http://man7.org/linux/man-pages/man7/symlink.7.html символическая ссылка - это обычный файл (со специальным флагом) с путем к цели в его содержимом.Таким образом, вы можете скопировать символическую ссылку в раздел FAT и прочитать ее содержимое там.

1 голос
/ 01 января 2011

Попробуйте

find . -type l -exec ls -la {} \;
...