【Linux】一步一步学Linux——rm命令(32)

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

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

05. 附录

参考:【Linux】一步一步学Linux系列教程汇总

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值