将rm -rf与目录一起使用

adb*_*dkb 0 directory bash rm

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

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

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

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

Ato*_*her 9

  • rm -rf dir/*

    删除目录中的文件(不删除目录本身). 请注意,隐藏文件不会被删除.

  • rm -rf dir/

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

  • rm -rf dir

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

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

您需要拥有write要删除的文件或目录的exec权限,以及rm需要遍历以删除文件的目录的权限.你可以阅读更多有关Unix文件系统权限在这里.