将rm -rf与目录一起使用

时间:2016-08-13 11:52:48

标签: bash directory rm

我尝试搜索SO,但无法找到以下命令之间的区别。如果我有一个名为dir的目录,下面的命令有何不同?

  • rm -rf dir/*
  • rm -rf dir/
  • rm -rf dir

如果运行命令的id不是所有者,或者甚至在所有者的组中,对目录的用户权限如何影响结果?

我正在添加命令,在我正在处理的shell脚本中执行rm -rf,需要帮助来理解上述命令之间的区别。

1 个答案:

答案 0 :(得分:9)

  • rm -rf dir/*

    删除目录中的文件(不删除目录本身)。 注意hidden files不会被删除。

  • rm -rf dir/

    尾部斜杠表示dir是目录。如果它是一个文件,它将不会被删除。在您的情况下,这与rm -rf dir相同,但一般情况不同(见下文)

  • rm -rf dir

    在您的情况下,与上面的相同。

通常,rm等工具在路径名解析时通常会遵循IEEE/OpenGroup standards,这意味着dir/等同于dir/.。其中一个含义是,如果dir是目录rm -rf dir/的符号链接,则会删除目录的内容(包括隐藏文件),但不删除链接或目录本身,而{{1}只会删除符号链接。

您需要对要删除的文件或目录具有rm -rf dir权限,并对write需要遍历以删除文件的目录具有exec权限。您可以阅读有关Unix文件系统权限here的更多信息。