答案1
rm
(移除又名删除):破坏信息,因此如果您原本想在文件上运行它,却在目录上运行它,那么可能会造成很大的损害。cp
(复制):再说一遍,您是想复制文件吗?如果我们复制一个目录,其中可能包含数千个文件。这可能不是您想要的,而且填满您的磁盘是不好的。mv
(移动又名重命名):只是重命名目录,其内容始终保持不变,因此我们无法在此处执行任何递归操作。我们肯定不会想将目录及其所有子目录重命名为同一个名称。
答案2
从目录的基本角度来看:
rm
必须递归到目录并unlink
为rmdir
每个文件和目录调用cp
必须递归到目录中读取每个文件和目录,然后将其重写到新位置mv
只需调用一次即可rename
由于目录没有可实施的递归操作,因此mv
它没有-r
选项。
与关注损害或所花费时间rm
或cp
实际原因的其他答案不同,它只是这些命令实现的一个泄漏的抽象。
答案3
通过了解文件系统的工作原理,这会变得更有意义。
目录实际上是一种文件。其内容是该目录中文件的名称,以及有关在磁盘上查找这些文件的位置的信息。这些信息是以磁盘而不是目录的形式存储的。
当你mv
进入目录时,你只是在移动目录本身。文件会保持原样,不会对它们进行任何操作。因此,无需递归进入目录。目录中的文件会自然而然地自动随之“移动”。
是的,如果你在磁盘之间移动东西,情况会更复杂。这些命令主要是为简单情况而设计的,后台有额外的机制来处理复杂情况。