Здесь следует быть осторожным: когда ls или stat не отображают абсолютный путь - ссылка не имеет абсолютного пути! Это особенно. это важно, когда устройство смонтировано, например, в другом контексте (например, если у вас есть что-то на компакт-диске или USB-накопителе или вы пытаетесь восстановить сломанный жесткий диск). Все упомянутые решения (realpath, readlink, ....) показывают только абсолютный путь в смонтированном контексте.
flolo
Ответы:
225
realpathне доступен для всех версий Linux, но readlinkдолжен быть.
readlink -f symlinkName
Вышеупомянутое должно помочь.
В качестве альтернативы, если у вас не установлено ни одно из вышеперечисленных, вы можете сделать следующее, если у вас установлен python 2.6 (или новее).
man realpathвнизу показывает, что он является частью "GNU coreutils", который, я почти уверен, всегда входит в Ubuntu, поэтому, хотя @IanStapletonCordasco говорит, что " realpathдоступен не для всех версий Linux", он должен быть, по крайней мере, доступен для всех Я считаю, что это производные от Ubuntu и Ubuntu.
Габриэль Стейплс,
10
ароматизаторы unix -> ll symLinkName
OSX -> readlink symLinkName
Разница в том, что 1-й способ будет отображать путь символьной ссылки мигающим способом, а 2-й способ просто отобразит его на консоли.
ls может сделать это без ссылки для чтения; просто используйте ls -l. Это также вообще не работает, пытается сделать это для всего в каталоге (без ссылок), и если ваш ls настроен на использование цветов, awk полностью ломается. просто используйтеfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'
Ответы:
realpath
не доступен для всех версий Linux, ноreadlink
должен быть.Вышеупомянутое должно помочь.
В качестве альтернативы, если у вас не установлено ни одно из вышеперечисленных, вы можете сделать следующее, если у вас установлен python 2.6 (или новее).
источник
-f
флаг, и тогда это сработает. т.е.readlink symlinkName
realpath <path to the symlink file>
должен сделать свое дело.источник
man realpath
внизу показывает, что он является частью "GNU coreutils", который, я почти уверен, всегда входит в Ubuntu, поэтому, хотя @IanStapletonCordasco говорит, что "realpath
доступен не для всех версий Linux", он должен быть, по крайней мере, доступен для всех Я считаю, что это производные от Ubuntu и Ubuntu.ароматизаторы unix ->
ll symLinkName
OSX ->
readlink symLinkName
Разница в том, что 1-й способ будет отображать путь символьной ссылки мигающим способом, а 2-й способ просто отобразит его на консоли.
источник
Другой способ увидеть информацию - это
stat
команда, которая покажет больше информации. Командаstat ~/.ssh
на дисплее моей машиныНадеюсь, это может кому-то помочь.
источник
Вы можете использовать
awk
сsystem
вызовом,readlink
чтобы получить эквивалентls
вывода с полными путями символических ссылок. Например:Будет отображаться, например,
источник
ls -l
. Это также вообще не работает, пытается сделать это для всего в каталоге (без ссылок), и если ваш ls настроен на использование цветов, awk полностью ломается. просто используйтеfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'