小编Arj*_*jen的帖子

如何测试链接的链接?

我想测试一个文件是否是另一个链接的链接。我试过 readlink 但它不能按我需要的方式工作:

ralph@bash4.4.12,1:~/subdir1 $ ll
lrwxrwxrwx 1 pi pi   13 Apr 10 14:34 hellolink -> subdir2/hello
lrwxrwxrwx 1 pi pi    9 Apr 10 14:34 hellolink2 -> hellolink
drwxr-xr-x 2 pi pi 4096 Apr 10 14:33 subdir2
Run Code Online (Sandbox Code Playgroud)

使用 readlink 我现在得到最终目标的规范化形式或下一个链接(hellolink)的裸文件名:

ralph@bash4.4.12,1:~/subdir1 $ readlink -f hellolink2
/home/ralph/subdir1/subdir2/hello
ralph@bash4.4.12,1:~/subdir1 $ readlink hellolink2
hellolink
Run Code Online (Sandbox Code Playgroud)

但我需要的是 hellolink2 指向的文件的完整路径:

/home/ralph/subdir1/hellolink
Run Code Online (Sandbox Code Playgroud)

现在我正在做这样的事情:

if [ -h "$(dirname hellolink2)/$(readlink hellolink2)" ] ; then 
            echo hellolink2 is a link
fi
Run Code Online (Sandbox Code Playgroud)

当我在循环中多次执行此操作时,使用 find 为其提供文件名,这看起来像是很多开销。

有更容易的方法吗?

test readlink

5
推荐指数
0
解决办法
121
查看次数

标签 统计

readlink ×1

test ×1