一般我们查看软链接的目标文件都是用 ls -l 这种形式,但它只能查看该软链接的当前目标,如果该目标又是一个软链接的话,该命令并不会递归查找,最终输出真实的目标文件。
那有没有什么方法可以输出软链接的最终目标文件呢?
当然有,下面用个小实验来展示下。
先创建以下文件:
代码语言:javascript复制$ tree
.
├── a
│ └── a.txt
├── b
│ └── b.txt -> ../a/a.txt
└── c
└── c.txt -> ../b/b.txt
3 directories, 3 files
如果用 ls -l 命令,只会输出软链接的当前目标,比如下面这样:
代码语言:javascript复制$ ls -l c/c.txt
lrwxrwxrwx 1 yt yt 10 Oct 9 18:43 c/c.txt -> ../b/b.txt
如果我们想知道c.txt这个软链接最终指向哪个文件,可以用下面的命令:
代码语言:javascript复制$ realpath c/c.txt
/home/yt/test/a/a.txt
由上可见,realpath命令遍历所有软链接后,输出了c.txt最终指向的目标文件,而且还是以绝对路径形式输出的。
那有没有什么方法可以查看寻找最终目标文件的整个过程呢?
用下面的命令:
代码语言:javascript复制$ namei c/c.txt
f: c/c.txt
d c
l c.txt -> ../b/b.txt
d ..
d b
l b.txt -> ../a/a.txt
d ..
d a
- a.txt
希望对你有所帮助。
完。