当使用
rm -rf
来删除文件或目录时,它会做什么?
-r
和-f
选项如何一起工作?rm -rf
来删除文件或目录时,它会做什么?
-r
和-f
选项如何一起工作?rm -rf
与rm -r -f
相同。rm
的man页面(在终端中键入man rm
查看)-r
的作用是:remove directories and their contents recursively
-f
的作用是:ignore nonexistent files and arguments, never prompt
rm -rf /
理论上将删除您具有写权限的任何目录中计算机上的所有文件。如果您是root用户,那意味着清空整个系统。(实际上,这不会起作用,因为GNU rm
命令有一个特殊情况,除非您同时使用 --no-preserve-root
参数,否则它会拒绝允许执行 rm -r /
)。 - cjmrm -rf /
来测试它是否被正确捕获。 - cjmman <command>
例如:
man rm
/<pattern>
/-f
-f, --force
ignore nonexistent files and arguments, never prompt
/-r
后,你将得到:-r, -R, --recursive
remove directories and their contents recursively
您可以使用n
(下一个)和N
(上一个)在搜索结果之间移动。
如果您需要做某事,但不知道命令名称,请使用apropos
在手册页面中进行搜索:
apropos <pattern>
例如:
apropos directory listing
r
"标志用于递归地删除目录及其内容,而"f
"表示强制删除,它会忽略任何确认提示。rm -rf <ARG>
是用来强制递归删除文件的,其中 <ARG>
是一个目录(虽然也可以是一个文件)。
-r
(递归删除)的整个意义在于,如果目录不为空,rm
无法删除目录,这是因为 rm
使用的底层系统调用(unlink)只能操作空目录。因此,-r
标志的作用是先深度优先搜索进入目录并先删除文件,然后只有当目录为空时才会删除它。通过使用带有 -delete
标志的 find
命令也可以实现相同的效果(当您不指定按 -type
进行过滤时,但这是另外一回事)。-f
选项,它有两个作用-一是防止提示是否要删除文件(比如当你在自己的目录中删除其他用户拥有的文件时,它不会显示rm: remove write-protected regular empty file 'f1'?
确认提示),二是忽略不存在的文件。所以例如,对于一个不存在的文件名,你应该会得到rm: cannot remove 'nonexistent': No such file or directory
错误。.
├── AAA
│ └── file2.txt
└── BBB
└── AAA
└── file1.txt
rm -rf AAA
将产生以下结果.
└── BBB
└── AAA
└── file1.txt
如果你不确定101%,最好用rm
检查虚拟文件夹。