bash - 对目录使用 rm -rf

标签 bash directory rm

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

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

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

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

最佳答案

  • rm -rf dir/*

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

  • rm -rf dir/

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

  • rm -rf 目录

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

一般情况下,rm等工具通常跟在IEEE/OpenGroup standards后面当谈到路径名解析时,这意味着 dir/ 等同于 dir/.。其中的一个含义是,如果 dir 是目录的符号链接(symbolic link) rm -rf dir/ 将删除目录的内容(包括隐藏文件)而不是链接或目录本身,而 rm -rf dir 只会删除符号链接(symbolic link)。

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

关于bash - 对目录使用 rm -rf,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38932431/

相关文章:

bash - 即使测试失败,TravisCI构建也会成功

c# - 遍历目录中的子目录

command - 如何在linux服务器中使用 "rm -R"命令恢复被删除的文件?

linux - 以下方法有什么问题(rm + xargs)

zsh - 如何在 zsh 中删除文件夹中的所有文件,但不删除文件夹本身?

bash - 有没有办法限制运行 bash 命令的时间和内存资源?

bash - GNU Parallel - 哪个作业失败了?

bash - 从 bash 调用时 screen 以不同方式转义

replace - 在 Notepad++ 中指定多个目录在文件中查找

php - 文件上传 - 目录结构的最佳实践?