gpt4 book ai didi

linux - 找出硬链接(hard link)的原始文件的路径

转载 作者:太空宇宙 更新时间:2023-11-04 04:46:08 26 4
gpt4 key购买 nike

现在,我感觉有些人会认为没有硬链接(hard link)的原始文件,但我强烈不同意,因为我做了以下实验。

让我们创建一个内容为 pwd 的文件并建立一个到子文件夹的硬链接(hard link):

echo "pwd" > original
mkdir subfolder
cp -l original subfolder/hardlink

现在让我们看看如果我使用 shell 运行文件会输出什么:

sh original
sh subfolder/hardlink

输出是相同的,即使文件 hardlink位于子文件夹中!

抱歉,介绍很长,但我想确保没有人说我的以下问题无关紧要。

所以我现在的问题是:如果原始文件的内容不方便pwd ,如何从硬链接(hard link)文件中找出原始文件的路径?

我知道Linux程序似乎以某种方式知道路径,但不知道文件名,因为某些程序返回<path to original file>/hardlinkname的错误消息没找到。但他们是如何做到的呢?

提前感谢您的回答!

编辑:顺便说一句,我通过将硬链接(hard link)命名为与原始文件相同的方式修复了上述错误消息。

最佳答案

But how do they do that?

通过查找相同的 inode 值。这是列出具有相同 inode 的文件的一种方法:

find /home -xdev -samefile original

将/home 替换为 find 的任何其他起始目录以开始搜索。

how do I find out the path to the original file from a hard link file?

对于硬链接(hard link),没有多个文件,只有一个文件(inode)具有多个(文件)名称。

附录:

is there no other way to find the hard links of an inode than searching through folders?

lnlsfindstat 是发现和查询文件系统 inode 的常用方法。然后,根据您接下来要完成的任务,许多文件、目录、归档和搜索命令都会识别 inode 值。有些可能需要特殊的 -inum--follow 或等效选项来指定 inode。

我上面给出的 find 示例只是其中一种用法。另一种是结合xargs对所有找到的文件进行操作。这是将它们全部删除的一种方法:

find /home -xdev -samefile original | xargs rm

在 --help 下查看其他标准操作系统命令。大多数 Linux 发行版还附带解释 inode 以及哪些工具可使用 inode 的帮助文件。

关于linux - 找出硬链接(hard link)的原始文件的路径,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35102169/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com