rmdir和rm -r之间的区别


9

我通常使用rm删除目录:

rm -r myDir

但是我知道另一个命令rmdir,它似乎也可以完成这项工作:

rmdir myDir

这两个命令有什么区别,什么时候应该使用?


2
如果子目录中有文件,您的rmdir是否可以工作?
杰夫·谢勒

1
另请参见同名系统调用rmdir(2),该系统调用只能删除空目录。
David Foerster

4
顺便说一句,有一个使用“正确”程序的步骤rm -r:(1)输入命令,但不要输入(2)将手从键盘上移开(3)数到五(4)按ENTER。我已经开始使用所有危险的命令执行类似的操作,以便让我有机会查看自己在做什么,确保输入正确的内容,考虑是否会产生意想不到的后果,等等。有时这会导致我例如,擦除我的命令并先做一些额外的检查。
2017年

3
@ajb- rm -rf ~ /*清理我的主目录。或等待,也许清理系统。总是要仔细检查;)。
汤姆·卡彭特

1
@ajb请注意,rmdirrm -r是两个相同长度的字符串 :-)
Kusalananda

Answers:


14

rm -r删除目录及其所有内容;rmdir如果目录为空,将仅删除目录。我喜欢使用以下命令删除目录及其所有内容:

rm -rf <directory_to_be_removed>

17
注意,-f如果不需要,通常不应该使用。-rf每次都方便使用,但是(几乎)禁用所有安全检查。
allo

5
-1 RM的的uneccesary推荐-f标志,它可以有不可预见的,unrevertable后果

rmdir就是这样rm -d吗?
Stan Strum,

@StanStrum -d不是的标准选项rm
库萨兰达

@cat的rm命令,一般可能有这些后果。在脚本中-f运行时,该标志很有用set -e。我同意没有必要使用就没有必要
库沙兰丹

1

rm -r当您要递归删除目录及其所有内容时,或者当目标可能是目录或文件而无论目录是什么时,都应该删除它时,应使用。

rmdir想要删除空目录时应使用。

rmdir命令很有用,因为它拒绝删除非空目录和文件。在您可能要绝对确定要删除的目录是目录并且目录在删除之前(例如,在脚本中)为空并且想要将其视为错误情况的情况下,这可以作为一种安全措施。除此以外。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.