假设我设置了一个符号链接:
ln -s /root/Public/mytextfile.txt /root/Public/myothertextfile.txt
有没有办法查看myothertextfile.txt
使用命令行的目标是什么?
假设我设置了一个符号链接:
ln -s /root/Public/mytextfile.txt /root/Public/myothertextfile.txt
有没有办法查看myothertextfile.txt
使用命令行的目标是什么?
使用
-f
标志打印规范化版本。例如:来自
man readlink
:readlink 是您想要的命令。您应该查看该命令的手册页。因为如果你想跟踪到实际文件的符号链接链,那么你需要 -e 或 -f 开关:
这也将起作用:
但
readlink
更适合在脚本中使用而不是解析ls
.如果要显示链接的来源和目的地,请尝试
stat -c%N files*
. 例如它不适合解析(
readlink
用于那个),但它显示链接名称和目的地,没有混乱ls -l
-c
可以写作--format
,%N
意思是“引用的文件名,如果符号链接则取消引用”。这
readlink
是一件好事,但 GNU 特定且非跨平台。我曾经为 编写跨平台脚本/bin/sh
,因此我会使用类似的东西:或者:
但是这些需要在不同的平台上进行测试。我认为它们会起作用,但不能 100% 确定
ls
输出格式。的结果
ls
也可以在bash
不依赖于外部命令(如awk
,sed
或perl
.此
bash_realpath
函数解析链接的最终目的地(链接→链接→链接→最终):如果您不能使用,则可以像这样
readlink
解析 的结果。ls -l
正常的结果是:
所以我们想替换“ -> ”之前的所有内容,包括箭头。我们可以
sed
为此使用:这个问题不够准确,无法像 brian-brazil 那样给出一个简单的答案:
确实会将路径构造中涉及的每个符号链接取消引用到后面的最终目标
some_path
。但是一级级联符号链接只是系统中的一个特殊情况,一般情况是 N 级级联符号链接。在我的系统上查看以下内容:
rwhich
是我自己的递归实现,which
它将所有中间级联符号链接(到 stderr)打印到最终目标(到 stdout)。然后,如果我想知道是什么:
符号链接/usr/bin/emacs** 的目标,对我来说显而易见的答案是
/etc/alternatives/emacs
:级联符号链接 /usr/bin/emacs 背后的最终目标,答案应由以下人员
/usr/bin/emacs24-x
返回:ll
或者ls -l
应该列出目录项,包括你的符号链接和它的目标cd -P /root/Public/myothertextfile.txt
(在你的情况下)应该指向原始路径如果您在一个文件夹及其子文件夹中找到所有链接的目标,请使用以下
find . -type l -ls
链接类型的命令:如果你想要一个单一的目标,那么
ls -l
应该工作: