00. 目录
01. 命令概述
删除 (unlink) 文件。
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
02. 命令格式
rm [选项]… 文件…
03. 常用选项
删除 (unlink) 文件。
-f, --force 强制删除。忽略不存在的文件,不提示确认
-i 在删除前需要确认
-I 在删除超过三个文件或者递归删除前要求确认。此选项比-i 提
示内容更少,但同样可以阻止大多数错误发生
--interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),
或者always (-i)。如果此参数不加WHEN 则总是提示
--one-file-system 递归删除一个层级时,跳过所有不符合命令行参
数的文件系统上的文件
--no-preserve-roo 不特殊对待"/"
--preserve-root 不允许删除"/"(默认)
-d, --dir 删除空目录
-r, -R, --recursive 递归删除目录及其内容
-v, --verbose 详细显示进行的步骤
--help 显示此帮助信息并退出
--version 显示版本信息并退出
默认时,rm 不会删除目录。使用--recursive(-r 或-R)选项可删除每个给定
的目录,以及其下所有的内容。
要删除第一个字符为"-"的文件 (例如"-foo"),请使用以下方法之一:
rm -- -foo
rm ./-foo
请注意,如果使用rm 来删除文件,通常仍可以将该文件恢复原状。如果想保证
该文件的内容无法还原,请考虑使用shred。
04. 参考示例
4.1 删除文件,不加任何选项(centos7.5)
[deng@localhost test]$ ls
c d dir dir1 passwd systemd
[deng@localhost test]$ rm c
[deng@localhost test]$ ls
d dir dir1 passwd systemd
[deng@localhost test]$
4.2 同时删除多个文件 每个文件以空格分隔
[deng@localhost test]$ rm d passwd
[deng@localhost test]$ ls
dir dir1 systemd
[deng@localhost test]$
4.3 强制删除。忽略不存在的文件,不提示确认
使用 -f
选项会强制进行删除操作。如果目标文件不能打开,可以用 -f
尝试。
[deng@localhost test]$ ls
a dir dir1 systemd
[deng@localhost test]$ rm -f a
[deng@localhost test]$ rm -f a
[deng@localhost test]$
4.4 详细显示进行的步骤
[deng@localhost test]$ ls
a b c d dir dir1 systemd
[deng@localhost test]$ rm -v a b c d
已删除"a"
已删除"b"
已删除"c"
已删除"d"
[deng@localhost test]$
4.5 在删除前需要确认
使用 -i
选项,启用交互模式,会询问是否继续删除。如果确认删除,输入 y(yes);如果不想删除,输入 n(no)。
[deng@localhost test]$ ls
a b c d dir dir1 systemd
[deng@localhost test]$ rm -i a
rm:是否删除普通空文件 "a"?y
[deng@localhost test]$
4.6 递归删除目录及其内容
要删除一个目录以及目录下所有的文件,需要添加 -r 或者 -R 选项来递归实现。
[deng@localhost test]$ mkdir -p a1/b/c/d
[deng@localhost test]$ rm a1
rm: 无法删除"a1": 是一个目录
[deng@localhost test]$ rm -r a1
[deng@localhost test]$
4.7 删除链接文件
对于删除链接文件,只是删除链接文件,而不会删除链接文件所指向的文件。
[deng@localhost test]$ ls -l a_link
lrwxrwxrwx 1 deng deng 1 7月 13 23:31 a_link -> b
[deng@localhost test]$ rm a_link
[deng@localhost test]$ ls
b c d dir dir1 systemd
[deng@localhost test]$
4.8 删除以“-”开头的文件
[deng@localhost test]$ touch -- -file
[deng@localhost test]$ ls
b c d dir dir1 -file systemd
[deng@localhost test]$ rm -- -file
[deng@localhost test]$ ls
b c d dir dir1 systemd
[deng@localhost test]$
或者
[deng@localhost test]$ touch ./-file
[deng@localhost test]$ ls
b c d dir dir1 -file systemd
[deng@localhost test]$ rm -file
rm:无效选项 -- l
Try 'rm ./-file' to remove the file "-file".
Try 'rm --help' for more information.
[deng@localhost test]$ rm ./-file
因为一般“-”后面接的是选项。因此,单纯地使用 rm -file
,系统的命令就会误判。所以,只能用避过首字符“-”的方式(加上本目录 ./)。
4.9 自定义回收站功能
myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }
上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。