Linux如何在后台处理move命令?
假设我搬家目录
/home/me
我将其移到另一个目录
/home/foo/me
如何me
更改所有文件和目录路径?我知道Desktop
目录me
现在/home/foo/me/Desktop
也一样,Documents
/home/foo/me/Documents
但是文件系统是否显式更新目录下的 每个路径me
以反映更改?听起来效率不高,可能不是这样。
在哪里可以获取更多信息?
Linux如何在后台处理move命令?
假设我搬家目录
/home/me
我将其移到另一个目录
/home/foo/me
如何me
更改所有文件和目录路径?我知道Desktop
目录me
现在/home/foo/me/Desktop
也一样,Documents
/home/foo/me/Documents
但是文件系统是否显式更新目录下的 每个路径me
以反映更改?听起来效率不高,可能不是这样。
在哪里可以获取更多信息?
Answers:
要了解它如何移动文件夹,您可能需要了解一些有关Linux下文件系统的知识。每个文件和文件夹都作为称为“ inode ” 的数据结构的一部分存储。每个文件都有一个索引节点编号,文件夹也有一个索引编号。
要查看文件夹的索引节点,请使用命令ls -ial foldername
。第一列显示文件的索引节点号。对于每个文件夹,都有两个唯一的名称.
和..
,分别代表其自己的目录和父目录。
您可以尝试做一个实验,将包含子目录和文件的目录(例如,/ home / me / source)移动到另一个目录(例如,/ home / me / somewhere / else)。/ home / me / source的索引节点号及其所有内容在移动前后保持不变。唯一的区别是的索引节点号..
,它最初共享/ home / me的索引节点号,现在变成/ home / me / somewhere / else的索引节点号。用简单的措辞,Linux将链接更新到目录源,然后就完成了。
无论如何,硬盘上的内容都不会被修改,仅当移动文件夹时才会更新索引节点索引。当然,如果将文件夹移动到其他物理位置,则不是这种情况。
you can get the most accurate explanation by reading through the code.
我不敢苟同; 很长时间以来,我对C毫无经验,即使现在我也不喜欢它。而且,源代码通常经过优化,并且包含比所需更多的边缘情况。象征性的解释通常会提供更多帮助。