linux一步一脚印—rm命令

1 命令功能(简要说明):

    该命令用来删除Linux系统中的文件或目录。通常情况下rm不会删除目录,你必须通过指定参数-r或-R来删除目录。另外rm通常可以将该文件或目录恢复(注意,rm删除文件其实只是将指向数据块的索引点(information nodes)释放,只要不被覆盖,数据其实还在硬盘上。如果想要保证文件的内容无法复原,可以使用命令shred 。 另外一般还是要慎用rm -rf  /*这样的命令。

 

2 命令语法:

    rm【选项】… 文件…     #注:【】中的内容为非必选项

 

3 命令选项(只做常用命令参数讲述):

  使用帮助命令:man rm 或 rm -help

-f, –force 强制删除。忽略不存在的文件,不提示确认
-i  在删除前需要确认
-I(大写i)  在删除超过三个文件或者递归删除前要求确认。此选项比-i 提示内容更少,但同样可以阻止大多数错误发生
–interactive[=WHEN] 根据指定的WHEN 进行确认提示:never,once (-I),或者always (-i)。如果此参数不加WHEN 则总是提示
–one-file-system 递归删除一个层级时,跳过所有不符合命令行参数的文件系统上的文件
–no-preserve-roo 不特殊对待”/”
–preserve-root 不允许删除”/”(默认)
-r, -R, –recursive 递归删除目录及其内容
-v, –verbose 详细显示进行的步骤
–help 显示此帮助信息并退出
–version 显示版本信息并退出

 

4 使用范例:

  (1)rm 目录(文件名) ————这里注意下默认rm命令是有别名(alias rm=’rm -i’),并且无法强制覆盖,即使使用-f 参数也无法强制覆盖文件,可以使用\rm 执行rm命令时不走alias。

#删除指定文件
[root@localhost command_test]# ls
canglaoshi.txt
[root@localhost command_test]# rm canglaoshi.txt 
rm:是否删除普通空文件 "canglaoshi.txt"?y
[root@localhost command_test]# ls
[root@localhost command_test]# touch xiaocang.txt
[root@localhost command_test]# ls
xiaocang.txt
[root@localhost command_test]# \rm xiaocang.txt 
[root@localhost command_test]# ls
[root@localhost command_test]# 

 

  (2)rm -rf  目录(文件名)

#创建一个多级目录,不管目录是够为空,都能强制删除目录,以后目录下的子目录。
[root@localhost command_test]# mkdir -p dir1/{dir2,dir3/{dir4,dir5}} 
[root@localhost command_test]# ls
dir1
[root@localhost command_test]# cd dir1
[root@localhost dir1]# ls
dir2  dir3
[root@localhost dir1]# cd ..
[root@localhost command_test]# rm dir1
rm: 无法删除"dir1": 是一个目录
[root@localhost command_test]# rm -rf dir1
[root@localhost command_test]# ls
[root@localhost command_test]# 

 

  (3)rm -v 某类文件,并详细显示命令执行过程

#新建立两类文件,并只删除txt结尾的这一类文件
[root@localhost command_test]# touch canglaoshi.txt xiaocang.txt av.log
[root@localhost command_test]# ls
av.log  canglaoshi.txt  xiaocang.txt
[root@localhost command_test]# rm -v *.txt
rm:是否删除普通空文件 "canglaoshi.txt"?y
已删除"canglaoshi.txt"
rm:是否删除普通空文件 "xiaocang.txt"?y
已删除"xiaocang.txt"
[root@localhost command_test]# ls
av.log
[root@localhost command_test]#