【问题标题】:Get the path of link that it points to?获取它指向的链接路径?
【发布时间】:2010-10-18 18:42:57
【问题描述】:

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

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

【问题讨论】:

    标签: linux solaris aix symlink hp-ux


    【解决方案1】:

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

    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)

      【讨论】:

      • 它没有被拉平是多么可悲。
      猜你喜欢
      • 1970-01-01
      • 2015-12-13
      • 2017-06-08
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多