2009-04-10 116 views
2

是否有可能獲得它所指向的鏈接的絕對路徑? 有沒有簡單的系統命令?獲取它指向的鏈接路徑?

我需要爲以下所有OS HP-UX 11i的,1123u,1123i AIX 5.2和5.3 的SUSE Linux 10級 的Solaris 10

回答

5

您沒有指定一種語言,所以我假設您需要一個可以在您使用的任何shell中運行的命令。 ls命令有-l(這是一個橢圓形)選項,它打印出大量關於該文件的信息。信息的最後一位是完整的路徑,所以你應該能夠說

ls -l file | awk '{print $NF}' 
任何SUS2兼容的機器上

(這應該是所有的商業UNIX系統的)。如果文件或導向文件的任何目錄都有空格,則會出現問題。

2

如果你正在尋找一個系統調用,你想readlink(2)。這是標準化的,因此應在所有POSIX兼容系統上提供。

這裏是考慮到其使用情況,從所鏈接前面的一個例子:

#include <unistd.h> 

char buf[1024]; 
ssizet_t len; 

if ((len = readlink("/modules/pass1", buf, sizeof(buf)-1)) != -1) 
    buf[len] = '\0'; 

如果你正在尋找一個命令行工具,它看起來並不像有一個標準化的,但GNU( Linux)和BSD都有readlink(1)

+0

它如何悲傷不平等。 – kadeshpa 2009-04-10 15:51:49