我想测试一个文件是否是另一个链接的链接。我试过 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 为其提供文件名,这看起来像是很多开销。
有更容易的方法吗?