rm -rf 和 rm -r 有什么区别?

mda*_*sh1 -1 linux command rm

在 linux 中,'rm -rf' 和 'rm -r' 之间的区别是什么,两者似乎都在做同样的事情(删除整个目录)。

这是我运行的一些命令来测试它:

mohammad@mohammad-ThinkPad-E570:~/testerr$ ls
mohammad@mohammad-ThinkPad-E570:~/testerr$ mkdir foo1 foo2
mohammad@mohammad-ThinkPad-E570:~/testerr$ touch foo1/main.java foo2/main.java
mohammad@mohammad-ThinkPad-E570:~/testerr$ tree
.
??? foo1
?   ??? main.java
??? foo2
    ??? main.java

2 directories, 2 files
mohammad@mohammad-ThinkPad-E570:~/testerr$ rm -r foo1
mohammad@mohammad-ThinkPad-E570:~/testerr$ ls
foo2
mohammad@mohammad-ThinkPad-E570:~/testerr$ rm -rf foo2
mohammad@mohammad-ThinkPad-E570:~/testerr$ tree
.

0 directories, 0 files
mohammad@mohammad-ThinkPad-E570:~/testerr$ 
Run Code Online (Sandbox Code Playgroud)

Tuğ*_*man 5

-f 选项是删除提示。

-r 选项是递归工作。

比方说,我们有一个文件夹命名stackoverflow与内容image.jpg otherimage.jpg mydog.doc

输入rm -r stackoverflow终端可能会说:rm: descend into write-protected directory 'stackoverflow'?如果你说它y会问你新的问题。

rm: remove write-protected regular file stackoverflow/image.jpg'?
rm: remove write-protected regular file stackoverflow/otherimage.jpg'?
rm: remove write-protected regular file stackoverflow/mydog.doc'?
Run Code Online (Sandbox Code Playgroud)

基本上,它会询问您是否要执行此操作的每一步。

现在让我们尝试 rm -rf stackoverflow

这次不会再问任何问题,文件夹中的所有内容现在都被删除了。