Linux 如何处理移动命令

Linux 如何处理移动命令

Linux 如何在底层处理移动命令?

假设我移动了我的主目录

/home/me

我将其移动到另一个目录

/home/foo/me

所有文件和目录路径是如何me变化的?我知道我的Desktop目录 me现在是/home/foo/me/DesktopDocuments /home/foo/me/Documents但文件系统是否会明确更新每个路径me以反映变化?这听起来不太有效,可能不是这个。

在哪里可以获取更多有关此内容的信息?

答案1

要了解它如何移动文件夹,您可能需要了解一些有关 Linux 下的文件系统的知识。每个文件和文件夹都存储为称为“索引节点“每个文件都有一个 inode 编号,文件夹也一样。

要查看文件夹的 inode,请使用命令ls -ial foldername。第一列显示文件的 inode 编号。每个文件夹都有两个唯一名称...,分别代表其自己的目录和父目录。

您可以尝试做一个实验,将一个目录(例如,/home/me/source)及其子目录和文件移动到另一个目录(例如/home/me/somewhere/else)。 /home/me/source 及其所有内容的 inode 编号在移动前后保持不变。唯一的区别是 inode 编号..,它最初与 /home/me 共享 inode 编号,现在变为 /home/me/somewhere/else 的 inode 编号。简而言之,Linux 更新目录的链接来源然后就完成了。

无论如何,硬盘上的内容都不会被修改,只有文件夹移动时 inode 索引才会更新。当然,如果您将文件夹移动到不同的物理位置,情况就不是这样了。

答案2

mv如果您对和等程序的工作原理感兴趣cp,请记住它们是开源的,您可以通过阅读代码获得最准确的解释。这里包含所有核心实用程序的链接。具体来说,您可以找到mv 在这里

相关内容