Когда я использую ls -la symlinkNameили stat symlinkNameнет, отображается весь путь (например ../../../one/two/file.txt)
Какая команда linux показывает полный путь?
Когда я использую ls -la symlinkNameили stat symlinkNameнет, отображается весь путь (например ../../../one/two/file.txt)
Какая команда linux показывает полный путь?
Ответы:
realpathне доступен для всех версий Linux, но readlinkдолжен быть.
readlink -f symlinkName
Вышеупомянутое должно помочь.
В качестве альтернативы, если у вас не установлено ни одно из вышеперечисленных, вы можете сделать следующее, если у вас установлен python 2.6 (или новее).
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
-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на дисплее моей машины
File: ‘/home/sumon/.ssh’ -> ‘/home/sumon/ssh-keys/.ssh.personal’
Size: 34 Blocks: 0 IO Block: 4096 symbolic link
Device: 801h/2049d Inode: 25297409 Links: 1
Access: (0777/lrwxrwxrwx) Uid: ( 1000/ sumon) Gid: ( 1000/ sumon)
Access: 2017-09-26 16:41:18.985423932 +0600
Modify: 2017-09-25 15:48:07.880104043 +0600
Change: 2017-09-25 15:48:07.880104043 +0600
Birth: -
Надеюсь, это может кому-то помочь.
Вы можете использовать awkс systemвызовом, readlinkчтобы получить эквивалент lsвывода с полными путями символических ссылок. Например:
ls | awk '{printf("%s ->", $1); system("readlink -f " $1)}'
Будет отображаться, например,
thin_repair ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_restore ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_rmap ->/home/user/workspace/boot/usr/bin/pdata_tools
thin_trim ->/home/user/workspace/boot/usr/bin/pdata_tools
touch ->/home/user/workspace/boot/usr/bin/busybox
true ->/home/user/workspace/boot/usr/bin/busybox
ls -l. Это также вообще не работает, пытается сделать это для всего в каталоге (без ссылок), и если ваш ls настроен на использование цветов, awk полностью ломается. просто используйтеfind . -maxdepth 1 -type l -ls | awk '{print $11 "\t" $12 "\t" $13}'