移除文件或者目录
命令语法格式
rm [OPTION]… [FILE]…
命令描述
rm命令用于删除文件和目录,默认是不删除目录的。本文中的rm命令是GNU实现的rm命令。
如果给出-I或–interactive=WHEN选项,并且有三个以上的文件FILE或给出了-r、-R、–recursive,则rm会提示用户是否继续执行整个操作,如果用户的响应不是肯定的,则整个命令中止。
否则,如果文件不可写,标准输入是终端,并且未给出-f或–force选项,或者给出-i或–interactive=WHEN选项,则rm会提示用户是否删除 文件。如果用户的响应不是肯定的,则跳过该文件。
拒绝删除.和..文件,这是POSIX的要求。
警告:如果你使用rm删除文件,通常可以恢复该文件的内容。如果你想要确保内容真正无法恢复,请考虑使用shred(1)命令。
命令支持的选项及含义
-f, –force
忽略不存在的文件和丢失的参数,并且不会提示用户。忽略以前的任何前面的–interactive (-i)选项。
-i
对每个要删除的每个文件进行提示是否要删除。如果用户的响应不是肯定的,则跳过该文件。忽略任何前面的–force(-f)选项。相当于–interactive=always。
-I
如果有三个以上的文件或进行递归删除,则提示一次是否继续执行命令。忽略任何前面的–force(-f)选项。相当于–interactive=once。
–interactive[=WHEN]
指定何时显示交互式提示。WHEN可能被省略,或者是下面中的一个:
–one-file-system
当递归地删除时,如果遇到的目录与命令行参数中指定的目录在不同的文件系统上,则跳过该目录。
此选项在删除通常不包含有价值数据的构建“chroot”层次结构时非常有用。但是,绑定挂载/归入这样的层次结构并不罕见,以便更容易地使用其启动文件。问题在于很容易忘记卸载/归位。然后,当你使用rm -rf删除通常丢弃的chroot时,该命令也会删除/ home下的所有内容。使用–one-file-system选项,它会警告并跳过其他文件系统上的目录。当然,如果它和你的chroot碰巧在同一个文件系统上,这将不会保存你的/ home。
–no-preserve-root
递归删除时不要特别处理根目录(/)。除非你确实要删除计算机上的所有文件,否则不推荐使用此选项。参考特别对待根目录。
–preserve-root
与–recursive选项一起使用时,尝试删除根目录(/)时会失败。这是默认行为。参考特别对待根目录。
-r, -R, –recursive
递归地删除列出的目录及其内容。通常删除目录时需要使用该选项。
-d, –dir
如果命令行中列出的目录为空,请将其删除。
-v, –verbose
在执行删除前,打印要被删除的文件。
–help
显示帮助信息并退出。
–version
显示版本信息并退出。
使用示例
如果要删除以-开始的文件,比如,’-foo’,可以使用下面的命令:
# rm ./-foo
默认情况下,rm不会删除目录,需要使用–recursive(-r、-R)来删除列出的目录,以及内容:
相关手册
unlink(1), unlink(2), chattr(1), shred(1)
查看在线手册:http://www.gnu.org/software/coreutils/rm
查看info手册:info ‘(coreutils) rm invocation’
参考文献
- man 1 rm, version GNU coreutils 8.26
更新日志
- 08/24/2017 创建文章
- 06/12/2018 更新文章内容