欢迎光临
我们一直在努力

Linux rm命令详解

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"; }

上面的操作过程模拟了回收站的效果,即删除文件的时候只是把文件放到一个临时目录中,这样在需要的时候还可以恢复过来。

赞(0) 打赏
未经允许不得转载:裕普网络 » Linux rm命令详解

裕普网络 一个IT运维相关的网站

官方网站联系我们

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

微信扫一扫打赏