2

是否有可能获得它指向的链接的绝对路径?有没有简单的系统命令?

我需要以下所有操作系统 HP-UX 11i、1123u、1123i AIX 5.2 和 5.3 Suse Linux 10 Solaris 10

4

2 回答 2

5

您没有指定语言,所以我假设您想要一个可以在您使用的任何 shell 中运行的命令。该ls命令具有-l(即 ell)选项,可打印出有关文件的大量信息。最后一点信息是完整路径,所以你应该可以说

ls -l file | awk '{print $NF}'

在任何符合 SUS2 的机器上(应该是所有的商业 UNIX)。但是,如果文件或指向该文件的任何目录有空格,则会出现问题。

于 2009-04-10T15:59:09.687 回答
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).

于 2009-04-10T15:06:35.040 回答