當我使用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
上面應該有所斬斷。
另外,如果你不具備上述任何安裝,你可以做以下的,如果你有蟒蛇2.6(或更高版本)
python -c 'import os.path; print(os.path.realpath("symlinkName"))'
如果使用OSX,省略'-f'標誌,然後這可以工作。即readlink symlinkName' –
在OSX上省略-f標誌只給出了一個相對路徑 – timoxley
這個問題是關於Linux,你們都。 –
realpath <path to the symlink file>
應該這樣做。
UNIX系統 - >ll symLinkName
OSX - >readlink symLinkName
區別在於第一種方式會以閃爍的方式顯示sym鏈接路徑,第二種方式只會在控制檯上將其回顯出來。
可以使用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
另一種查看信息的方式是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: -
希望這可以幫助某人。
這裏應該小心:當ls或stat顯示沒有絕對路徑時 - 鏈接沒有絕對路徑!這是特別的。裝置安裝時很重要,例如,在不同的背景下(例如,如果你有一些CD或USB棒上的東西或嘗試恢復一些破碎的硬盤)。所有提到的解決方案(realpath,readlink,....)僅顯示已安裝上下文中的絕對路徑。 – flolo