Коли я використовую 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-й спосіб, який би моргав відображати шлях посилання sym, а другий спосіб просто перегукував би його на консолі.
Ще один спосіб бачити інформацію - це 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}'