如何查看长符号链接链的末尾

如何查看长符号链接链的末尾

假设我有一个链接指向另一个链接,而这个链接又指向另一个链接,以此类推。我不知道有多少层链接。有什么巧妙的命令行方法可以查看所有这些链接的最终目标?

答案1

某些版本支持跟踪链到末尾的选项。我的 Debian 机器上的版本readlink支持该-f选项。我的 Mac OS 机器上的版本不支持(但是,它被 fink 提供的版本所覆盖,该版本支持该选项)。

答案2

也许这不是最好的解决方案,这取决于您的需求。您可以使用以下命令检索链末尾的 inode:

stat -Lc '%i' the-link

并且如果您也需要这些文件的路径(如果链的两端彼此硬链接,则需要多个文件):

find /search/path/ `stat -Lc '%i' the-link`

好吧,有一个更聪明的解决方案:

readlink -f the-file

答案3

查看我的回答这里这里对于您可以用小函数作为起点来完成您想要看到的所有中间环节。

答案4

如果您想要一个跨平台的解决方案,您可以使用:

#!/usr/bin/env bash
s=/path/to/file
while [ -h $s ]; do s="$(readlink "$s")"; done
echo $s

看似不太雅致,但正如 dmckee 所述,Mac OS X 没有该-f选项readlink

相关内容