alw*_*938 32 linux command-line
我正在学习基本的 Linux 命令。这似乎违反直觉:为什么复制(cp)和删除(rm)需要递归选项(-R, --recursive)来与目录交互,而移动(mv)已经不需要这样做了?
小智 62
从目录的基本角度来看:
rm必须递归到目录并为每个文件和目录调用unlinkandrmdircp必须递归到目录中进行读取,然后将每个文件和目录重写到新位置mv只需要进行一次调用rename由于没有要mv为目录实现的递归操作,因此它没有选项-r。
与其他专注于损坏或所花费时间的答案不同,rm实际cp原因是它只是这些命令的实现的泄漏抽象。
Rob*_*son 39
rm(删除又名删除):破坏信息,因此如果您在目录上运行它而您打算在文件上运行它,那么您可能会造成很大的损害。cp(复制):再说一遍,您的意思是复制文件吗?如果我们复制一个目录,其中可能有数千个文件。这可能不是您想要的,并且填满磁盘是不好的。mv(移动又名重命名):仅重命名目录,其内容始终保持不变,因此我们在这里无法进行递归操作。我们当然不想将目录及其所有子目录重命名为相同的名称。通过一些有关文件系统如何工作的信息,这更有意义。
目录实际上是一种文件类型。其内容是该目录中文件的名称以及有关在磁盘上何处找到它们的信息。该信息存储在磁盘上,而不是目录中。
当您mv移动目录时,您只是移动目录本身。文件完全保留在原来的位置,并且没有对它们进行任何操作。因此,无需递归到目录中。其中的文件自然而自动地随之“移动”。
是的,如果您在磁盘之间移动内容,情况会更复杂。这些命令主要是为简单的情况而设计的,并且在幕后有额外的机制来处理复杂的情况。
| 归档时间: |
|
| 查看次数: |
10001 次 |
| 最近记录: |