每天⼀个Linux命令(5)rm命令
rm命令可以删除⼀个⽬录中的⼀个或多个⽂件或⽬录,也可以将某个⽬录及其下属的所有⽂件及其⼦⽬录均删除掉。对于链接⽂件,只是删除整个链接⽂件,⽽原有⽂件保持不变。
注意:使⽤rm命令要格外⼩⼼。因为⼀旦删除了⼀个⽂件,就⽆法再恢复它。所以,在删除⽂件之前,最好再看⼀下⽂件的内容,确定是否真要删除。rm命令可以⽤-i选项,这个选项在使⽤⽂件扩展名字符删除多个⽂件时特别有⽤。使⽤这个选项,系统会要求你逐⼀确定是否要删除。这时,必须输⼊y并按Enter键,才能删除⽂件。如果仅按Enter键或其他字符,⽂件不会被删除。
(1)⽤法:
⽤法:rm [选项]... ⽂件...
(2)功能:
删除 (unlink) ⽂件。
(3)选项参数:
1) -f, --force                            强制删除。忽略不存在的⽂件,不提⽰确认
2) -i                                        在删除前需要确认
3) -I                                      在删除超过三个⽂件或者递归删除前要求确认。此选项⽐-i 提⽰内容更少,但同样可以阻⽌⼤多数错误发⽣
4) --interactive[=WHEN]          根据指定的WHEN 进⾏确认提⽰:never,once (-I),或者always (-i)。如果此参数不加WHEN 则总是提⽰
5) --one-file-system                递归删除⼀个层级时,跳过所有不符合命令⾏参数的⽂件系统上的⽂件
6) --no-preserve-roo                不特殊对待"/" --preserve-root 不允许删除"/"(默认)
7) -r, -R, --recursive                递归删除⽬录及其内容
8) -v, --verbose                      详细显⽰进⾏的步骤 --help 显⽰此帮助信息并退出 --version 显⽰版本信息并退出
9) -d                                      直接把欲删除的⽬录的硬连接数据删除成0,删除该⽬录
(4)实例:
1)[root@localhost Document]# rm -i touch_test_file              等同于rm touch_test_file,交互式删除,y键确认删除,n键不删除
[root@localhost Document]# rm -i touch_test_file
rm:是否删除普通空⽂件"touch_test_file"?n
[root@localhost Document]# rm -i {touch_test_file,touch_test_file2}
rm:是否删除普通空⽂件"touch_test_file"?y
rm:是否删除普通空⽂件"touch_test_file2"?y
2)[root@localhost Document]# rm -f test  强制删除⽂件不做交互提醒
[root@localhost Document]# ll
总⽤量0
-rw-r--r--. 1 root      root      0 5⽉118:4910 days ago
drwxrwxr-x. 3 sunjimeng sunjimeng 17 5⽉103:13 bin
drwxrwxr-x. 3 sunjimeng sunjimeng 18 5⽉103:21 Father
-rw-r--r--. 1 root      root      0 5⽉118:58 test
[root@localhost Document]# rm -f test
[root@localhost Document]# ll
总⽤量0
-rw-r--r--. 1 root      root      0 5⽉118:4910 days ago
drwxrwxr-x. 3 sunjimeng sunjimeng 17 5⽉103:13 bin
drwxrwxr-x. 3 sunjimeng sunjimeng 18 5⽉103:21 Father
3)[root@localhost Document]# rm -r *                  删除当前⽬录下除隐含⽂件外的所有⽂件和⼦⽬录
[root@localhost Document]# ll
总⽤量0
-
rw-r--r--. 1 root      root      0 5⽉118:4910 days ago
drwxrwxr-x. 3 sunjimeng sunjimeng 17 5⽉103:13 bin
drwxrwxr-x. 3 sunjimeng sunjimeng 18 5⽉103:21 Father
[root@localhost Document]# rm -r *
rm:是否删除普通空⽂件"10 days ago"?y
rm:是否进⼊⽬录"bin"? y
rm:是否删除⽬录"bin/os_1"?y
rm:是否删除⽬录"bin"?y
rm:是否进⼊⽬录"Father"? y
rm:是否删除⽬录"Father/Child"?y
rm:是否删除⽬录"Father"?y
[root@localhost Document]# ll
总⽤量0
4)[root@localhost Document]# rm -v test1    显⽰删除的详细步骤
[root@localhost Document]# touch {test1,test2}
[root@localhost Document]# rm -v test1
rm:是否删除普通空⽂件"test1"?y
已删除"test1"
[root@localhost Document]# ll
总⽤量0
-rw-r--r--. 1 root root 0 5⽉119:24 test2
[root@localhost Document]#
5)[root@localhost Document]# rm f* 与[root@localhost Document]# rm ./t*  删除以某个或某些字符结尾或开头的⽂件
[root@localhost Document]# touch {file1,file2,test1,test2}
[root@localhost Document]# ll
总⽤量0
-rw-r--r--. 1 root root 0 5⽉119:28 file1
-rw-r--r--. 1 root root 0 5⽉119:28 file2
-rw-r--r--. 1 root root 0 5⽉119:28 test1
-rw-r--r--. 1 root root 0 5⽉119:28 test2
[root@localhost Document]# rm  f*
rm:是否删除普通空⽂件"file1"?y
rm:是否删除普通空⽂件"file2"?y
[root@localhost Document]# rm ./t*
rm:是否删除普通空⽂件"./test1"?y
rm:是否删除普通空⽂件"./test2"?y
[root@localhost Document]# ll
总⽤量0
6)[root@localhost Document]# touch -- -test与[root@localhost Document]# rm -- -test      删除以-字符开头的⽂件,另外ls -- -test可以列出此-开头的⽂件
[root@localhost Document]# touch -test
touch: ⽇期格式"est"⽆效
[root@localhost Document]# touch -- -test
[root@localhost Document]# ll
总⽤量0
-rw-r--r--. 1 root root 0 5⽉119:37 -test
[root@localhost Document]# rm -test
rm:⽆效选项 -- t
Try 'rm ./-test' to remove the file "-test".
Try 'rm --help'for more information.
[root@localhost Document]# rm -- -test
rm:是否删除普通空⽂件"-test"?y
7)myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }  ⾃定义回收站功能
[root@localhost test]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D;    mv "$@" $D && echo "moved to $D ok"; }
[root@localhost test]# alias rm='myrm'
[root@localhost test]# touch 1.log 2.log 3.log
[root@localhost test]# ll
总计16
-rw-r--r-- 1 root root    010-2615:081.log
-rw-r--r-- 1 root root    010-2615:082.log
-rw-r--r-- 1 root root    010-2615:083.log
drwxr-xr-x 7 root root 409610-2518:07 scf
drwxrwxrwx 2 root root 409610-2517:46 test3
drwxr-xr-x 2 root root 409610-2517:56 test4
drwxr-xr-x 3 root root 409610-2517:56 test5
[root@localhost test]# rm [123].log
moved to /tmp/20121026150901 ok
[root@localhost test]# ll
总计 16drwxr-xr-x 7 root root 409610-2518:07 scf
drwxrwxrwx 2 root root 409610-2517:46 test3
drwxr-xr-x 2 root root 409610-2517:56 test4
drwxr-xr-x 3 root root 409610-2517:56 test5
[root@localhost test]# ls /tmp/20121026150901/
1.log
2.log
3.log
[root@localhost test]#
linux删除子目录命令
说明:
上⾯的操作过程模拟了回收站的效果,即删除⽂件的时候只是把⽂件放到⼀个临时⽬录中,这样在需要的时候还可以恢复过来。
8)
[root@localhost Document]# rm --help
⽤法:rm [选项]... ⽂件...
Remove (unlink) the FILE(s).
-f, --force          ignore nonexistent files and arguments, never prompt
-i                    prompt before every removal
-I                    prompt once before removing more than three files, or
when removing recursively; less intrusive than -i,
while still giving protection against most mistakes
--interactive[=WHEN]  prompt according to WHEN: never, once (-I), or
always (-i); without WHEN, prompt always
--one-file-system        递归删除⼀个层级时,跳过所有不符合命令⾏参
数的⽂件系统上的⽂件
--no-preserve-root  do not treat '/' specially
--preserve-root  do not remove '/' (default)
-r, -R, --recursive  remove directories and their contents recursively
-d, --dir            remove empty directories
-v, --verbose        explain what is being done
--help        显⽰此帮助信息并退出
--version        显⽰版本信息并退出
默认时,rm 不会删除⽬录。使⽤--recursive(-r 或-R)选项可删除每个给定
的⽬录,以及其下所有的内容。
To remove a file whose name starts with a '-', for example '-foo',
use one of these commands:
rm -- -foo
rm ./-foo
请注意,如果使⽤rm 来删除⽂件,通常仍可以将该⽂件恢复原状。如果想保证
该⽂件的内容⽆法还原,请考虑使⽤shred。
GNU coreutils online help: </software/coreutils/>
请向</team/zh_CN.html> 报告rm 的翻译错误
要获取完整⽂档,请运⾏:info coreutils 'rm invocation'
9)[root@localhost Document]# rm --version 版本信息
[root@localhost Document]# rm --version
rm (GNU coreutils) 8.22
Copyright (C) 2013 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通⽤公共许可证第3 版或更新版本</licenses/gpl.html>。
本软件是⾃由软件:您可以⾃由修改和重新发布它。
在法律范围内没有其他保证。
由Paul Rubin、David MacKenzie、Richard M. Stallman 和
Jim Meyering 编写。