对目录使用 rm -rf
Using rm -rf with a directory
我尝试搜索 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 dir
您的情况与上述情况相同。
一般来说,像rm
这样的工具在解析路径名时通常会跟在IEEE/OpenGroup standards之后,也就是说dir/
等同于dir/.
。其中的一个含义是,如果 dir
是目录的符号 link,rm -rf dir/
将删除目录的内容(包括隐藏文件),但不会删除 link 或目录本身,而 rm -rf dir
只会删除 symlink.
您需要对要删除的文件或目录具有 write
权限,并且对 rm
需要遍历以删除文件的目录具有 exec
权限。您可以阅读有关 Unix 文件系统权限的更多信息 here。
我尝试搜索 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 dir
您的情况与上述情况相同。
一般来说,像rm
这样的工具在解析路径名时通常会跟在IEEE/OpenGroup standards之后,也就是说dir/
等同于dir/.
。其中的一个含义是,如果 dir
是目录的符号 link,rm -rf dir/
将删除目录的内容(包括隐藏文件),但不会删除 link 或目录本身,而 rm -rf dir
只会删除 symlink.
您需要对要删除的文件或目录具有 write
权限,并且对 rm
需要遍历以删除文件的目录具有 exec
权限。您可以阅读有关 Unix 文件系统权限的更多信息 here。