1.概述
删除 (unlink) 文件。
rm命令可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉。对于链接文件,只是删除整个链接文件,而原有文件保持不变。
注意:使用rm命令要格外小心。因为一旦删除了一个文件,就无法再恢复它。所以,在删除文件之前,最好再看一下文件的内容,确定是否真要删除。rm命令可以用-i选项,这个选项在使用文件扩展名字符删除多个文件时特别有用。使用这个选项,系统会要求你逐一确定是否要删除。这时,必须输入y并按Enter键,才能删除文件。如果仅按Enter键或其他字符,文件不会被删除。
2.语法
rm [选项] 文件目录
3.选项与参数
- -f:就是force的意思,忽略不存在的文件,不会出现警告信息;
- -i:互动模式,在删除前会询问使用者是否执行;
- -r: 递归删除,常用在目录的删除,此操作属于高危险操作,必须要要谨慎,不建议你来做。
演示:
删除 (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
4.案例
4.1删除文件
[root@localhost test]$ ls
c d dir dir1 passwd systemd
[root@localhost test]$ rm c
[root@localhost test]$ ls
d dir dir1 passwd systemd
[root@localhost test]$
4.2 同时删除多个文件,每个文件用空格分开。
[root@localhost test]$ rm d passwd
[root@localhost test]$ ls
dir dir1 systemd
[root@localhost test]$
4.3 强制删除,忽略不存在的文件,不进行提示。
使用 -f 选项会强制进行删除操作。
[root@localhost test]$ ls
a dir dir1 systemd
[root@localhost test]$ rm -f a
[root@localhost test]$ rm -f a
[root@localhost test]$
4.4显示详细的操作的步骤
[root@localhost test]$ ls
a b c d dir dir1 systemd
[root@localhost test]$ rm -v a b c d
已删除"a"
已删除"b"
已删除"c"
已删除"d"
[root@localhost test]$
4.5 再删除前进行确认。
使用-i
选项,启用交互模式,会询问是否继续删除。如果确认删除,输入 y(yes);如果不想删除,输入 n(no)
[root@localhost test]$ ls
a b c d dir dir1 systemd
[root@localhost test]$ rm -i a
rm:是否删除普通空文件 "a"?y
[root@localhost test]$
4.6 递归删除目录及其内容。
要删除一个目录以及目录下所有的文件,需要添加 -r 或者 -R 选项来递归实现。
[root@localhost test]$ mkdir -p a1/b/c/d
[root@localhost test]$ rm a1
rm: 无法删除"a1": 是一个目录
[root@localhost test]$ rm -r a1
[root@localhost test]$
4.7 删除链接文件。
对于删除链接文件,只是删除链接文件,而不是删除链接文件所指向的文件。
[root@localhost test]$ ls -l a_link
lrwxrwxrwx 1 root root 1 7月 13 23:31 a_link -> b
[root@localhost test]$ rm a_link
[root@localhost test]$ ls
b c d dir dir1 systemd
[root@localhost test]$
4.8 删除以“-”开头的文件
[root@localhost test]$ touch -- -file
[root@localhost test]$ ls
b c d dir dir1 -file systemd
[root@localhost test]$ rm -- -file
[root@localhost test]$ ls
b c d dir dir1 systemd
[root@localhost test]$
或者
[root@localhost test]$ touch ./-file
[root@localhost test]$ ls
b c d dir dir1 -file systemd
[root@localhost test]$ rm -file
rm:无效选项 -- l
Try 'rm ./-file' to remove the file "-file".
Try 'rm --help' for more information.
[root@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"; }
上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。