为什么工具喜欢cp和rm处理目录与常规文件分开?它们都要求用户明确指定她想要递归行为,否则它们根本不会处理目录。
我与计算机的第一次交互(不久前)是在 Windows/GUI/点击/拖放环境中进行的,无论目标如何,这些操作的行为总是相同的,这似乎总是很自然的。
当我使用通配符发出命令时,这种行为尤其让我感到沮丧。如果我想删除目录 ( *) 中除非空子目录之外的所有内容怎么办?
我只能想象这是某种防止用户用脚射击自己的安全功能,但这与我对一些 Unix 原则的理解相矛盾:
我的问题:
如果是后者,
pet*_*rph 11
Derobert 的为什么 unix mv 程序不需要目录的 -R(递归)选项但 cp 需要它?基本上回答了您的问题:复制或删除常规文件与对目录执行相同操作不同,因为对于目录,您必须处理其中包含的所有文件。因此操作是根本不同的。
另外值得注意的是,有一个特殊的实用程序rmdir只能作用于空目录。如果不检查事实,这导致人们得出结论,也许最初rm只能删除非目录,而必须通过递归使用rm清空目录然后rmdir删除这些目录来实现深度删除。