跟踪符号链接的路由

跟踪符号链接的路由

我想使用打印整个链接的附加选项来解析符号链接。例如,我想运行一个命令,readlink -f "symlink2"该命令报告链接的每个条目。换句话说,如果您要解析符号链接“symlink2->symlink1->/path/file”,那么上面命令的结果是“/path/file”,我希望得到如下输出:

$readlink -f "symlink2
symlink1
/path/file

答案1

一种方法是创建自己的递归readlink

function readlinkWithPrint() {
    link=`readlink "$@"`
    [ -e "$link" ] && echo "$link"
    [ -h "$link" ] && readlinkWithPrint "$link"
}

这是一个测试:

$ touch file
$ ln -s file symlink1
$ ln -s symlink1 symlink2
$ readlinkWithPrint symlink2
symlink1
file

不幸的是,这个功能非常基础;您提供给 frist 的选项readlink不会传播到其余选项,而且您无法读取多个文件。

答案2

我想你正在寻找namei,它是 util-linux 套件的一部分,可在每个非嵌入式 Linux 系统上使用。

这个线程关于 macOS 的等效项。这源代码如果您在其他 Unix 变体上需要它,则应该主要是可移植的。

相关内容