专栏首页Linux内核及编程语言底层相关技术研究如何查找软链接的最终目标文件

如何查找软链接的最终目标文件

一般我们查看软链接的目标文件都是用 ls -l 这种形式,但它只能查看该软链接的当前目标,如果该目标又是一个软链接的话,该命令并不会递归查找,最终输出真实的目标文件。

那有没有什么方法可以输出软链接的最终目标文件呢?

当然有,下面用个小实验来展示下。

先创建以下文件:

$ tree
.
├── a
│   └── a.txt
├── b
│   └── b.txt -> ../a/a.txt
└── c
    └── c.txt -> ../b/b.txt

3 directories, 3 files

如果用 ls -l 命令,只会输出软链接的当前目标,比如下面这样:

$ ls -l c/c.txt
lrwxrwxrwx 1 yt yt 10 Oct  9 18:43 c/c.txt -> ../b/b.txt

如果我们想知道c.txt这个软链接最终指向哪个文件,可以用下面的命令:

$ realpath c/c.txt
/home/yt/test/a/a.txt

由上可见,realpath命令遍历所有软链接后,输出了c.txt最终指向的目标文件,而且还是以绝对路径形式输出的。

那有没有什么方法可以查看寻找最终目标文件的整个过程呢?

用下面的命令:

$ 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

希望对你有所帮助。

完。

本文分享自微信公众号 - Linux内核及JVM底层相关技术研究(ytcode),作者:wangyuntao

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-10-09

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • Git 示例教程 - 撤销对文件的所有修改

    由上可见,f1.txt的内容由a变为了b,f2.txt是新创建的,还未进入到版本控制中。

    wangyuntao
  • Git示例教程 - 查看指定提交的修改内容

    wangyuntao
  • Git示例教程 - 修改上次提交

    如果上次提交的内容有误或者不全,想要修改上次提交中文件的内容,或是添加新的文件,可以执行下面的命令:

    wangyuntao
  • Linux常用命令(一)

    cd /demo/set 表示切换到/demo/set路径下。 cd logs 表示切换到logs路径下。 cd / 表示切换到根目录。 cd ../ 表示切换...

    乔千
  • linux-两个文件求交集、并集、差集

    (用sort将a.txt b.txt文件进行排序,uniq使得两个文件中的行唯一,使用-d输出两个文件中次数大于1的内容,即是得到交集)

    阿凡亮
  • linux学习第二十三篇:shell介绍,命令历史,命令补全和别名,通配符,输入输出重定向

    shell介绍 什么是shell, shell是一个命令解释器,提供用户和机器之间的交互。支持特定语法,比如逻辑判断、循环。每个用户都可以有自己特定的shel...

    用户1215343
  • 6千万词汇的巨型汉语词库

    关键字全网搜索最新排名 【机器学习算法】:排名第一 【机器学习】:排名第二 【Python】:排名第三 【算法】:排名第四 算法+语料≈NLP 这是一个六千万词...

    昱良
  • 对比文件内容

    苦咖啡
  • 命令行通配符教程

    一次性操作多个文件时,命令行提供通配符(wildcards),用一种很短的文本模式(通常只有一个字符),简洁地代表一组路径。

    ruanyf
  • 8.5 输入输出重定向

    大于号,重定向 > 正确输出 >> 追加重定向 2> 错误重定向 2>> 错误追加重定向 >+2>等于&> 表示结合了正确和错误 cat 1.t...

    运维小白

扫码关注云+社区

领取腾讯云代金券