我尝试搜索 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/