如何删除当前目录中的所有文件,包括当前目录?

Ib3*_*33X 5 bash file-io command-line delete-directory

如何从当前目录中删除所有文件和子目录,包括当前目录?

Joh*_*iss 12

在使用GNU工具的bash下,我会这样做(在大多数情况下应该是安全的):

rm -rf -- "$(pwd -P)" && cd ..
Run Code Online (Sandbox Code Playgroud)

不受bash和没有GNU工具,我会使用:

TMP=`pwd -P` && cd "`dirname $TMP`" && rm -rf "./`basename $TMP`" && unset TMP
Run Code Online (Sandbox Code Playgroud)

为什么这更安全:

  • 结束参数列表,--在我们的目录以短划线开头的情况下(非bash:./在文件名之前)
  • pwd -P不只是pwd在我们不在真实目录中但在指向它的符号链接中的情况下.
  • "在目录包含空格的情况下围绕参数

一些随机信息(bash版本):

  • cd ..在年底可以省略,但你会在一个不存在的目录,否则......

编辑:正如kmkaplan所指出的那样,--事情是没有必要的,因为pwd返回始终/在UNIX上开始的完整路径名