2013-04-15 121 views
79

當我使用ls -la symlinkNamestat symlinkName不顯示所有的路徑 (例如../../../one/two/file.txt如何看到完整的符號鏈接路徑

是什麼,揭示了全路徑的linux命令?

+4

這裏應該小心:當ls或stat顯示沒有絕對路徑時 - 鏈接沒有絕對路徑!這是特別的。裝置安裝時很重要,例如,在不同的背景下(例如,如果你有一些CD或USB棒上的東西或嘗試恢復一些破碎的硬盤)。所有提到的解決方案(realpath,readlink,....)僅顯示已安裝上下文中的絕對路徑。 – flolo

回答

138

realpath不適用於所有linux版本,但readlink應該是。

readlink -f symlinkName 

上面應該有所斬斷。

另外,如果你不具備上述任何安裝,你可以做以下的,如果你有蟒蛇2.6(或更高版本)

python -c 'import os.path; print(os.path.realpath("symlinkName"))' 
+10

如果使用OSX,省略'-f'標誌,然後這可以工作。即readlink symlinkName' –

+0

在OSX上省略-f標誌只給出了一個相對路徑 – timoxley

+2

這個問題是關於Linux,你們都。 –

16

realpath <path to the symlink file>應該這樣做。

6

UNIX系統 - >ll symLinkName

OSX - >readlink symLinkName

區別在於第一種方式會以閃爍的方式顯示sym鏈接路徑,第二種方式只會在控制檯上將其回顯出來。

0

可以使用awksystem呼叫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 
0

另一種查看信息的方式是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: - 

希望這可以幫助某人。

相關問題