rm是一个危险的命令,使用的时候要特别小心,尤为对于新手,不然整个系统就会毁在这个命令(好比在/(根目录)下执行rm * -rf)。因此,咱们在执行rm以前最好先确认一下在哪一个目录,到底要删除什么东西,操做时保持高度清醒的头脑。linux
一、命令格式:bash
rm [选项] 文件spa
二、命令功能:code
删除一个目录中的一个或多个文件或目录,若是没有使用- r选项,则rm不会删除目录。若是使用 rm 来删除文件,一般仍能够将该文件恢复原状。blog
三、命令参数:递归
-f, --force 忽略不存在的文件,从不给出提示。 -i, --interactive 进行交互式删除 -r, -R, --recursive 指示rm将参数中列出的所有目录和子目录均递归地删除。 -v, --verbose 详细显示进行的步骤 --help 显示此帮助信息并退出 --version 输出版本信息并退出
四、经常使用实例:io
(1)、删除文件file,有时系统会先询问是否删除。class
命令:test
rm 文件名变量
输出:
felix@felix-computer:~/test$ ls aaa.txt felix@felix-computer:~/test$ rm aaa.txt felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
说明:
有时候,系统会询问是否删除,输入y后就会删除文件,不想删除则数据n。
(2)、强行删除file,系统不提示。
命令:
rm -f 文件名
输出:
felix@felix-computer:~/test$ ls aaa.txt felix@felix-computer:~/test$ rm -f aaa.txt felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
(3)、删除任何.txt文件;删除前逐一询问确认
命令:
rm -i *.txt
输出:
felix@felix-computer:~/test$ ls a.txt b.txt felix@felix-computer:~/test$ rm -i *.txt rm:是否删除普通空文件 'a.txt'? y rm:是否删除普通空文件 'b.txt'? y felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
(4)、将test1目录以及子目录中的全部文件删除
命令:
rm -r test1 若是要显示提示: rm -ri test1
输出:
felix@felix-computer:~/test$ ls test1 felix@felix-computer:~/test$ find ./ -type f ./test1/t.txt felix@felix-computer:~/test$ rm -ri test1/ rm:是否进入目录'test1/'? y rm:是否进入目录'test1/test2'? y rm:是否删除目录 'test1/test2/test3'? y rm:是否删除目录 'test1/test2'? y rm:是否删除普通空文件 'test1/t.txt'? y rm:是否删除目录 'test1/'? y felix@felix-computer:~/test$
(5)、删除test2子目录中的全部文件,而且不一一确认。
命令:
rm -rf test2
输出:
felix@felix-computer:~/test$ mkdir -p test2/test3/test4 felix@felix-computer:~/test$ touch test2/aaa.txt test2/test3/bbb.txt test2/test3/test4/ccc.txt felix@felix-computer:~/test$ find ./ -type f ./test2/test3/test4/ccc.txt ./test2/test3/bbb.txt ./test2/aaa.txt felix@felix-computer:~/test$ rm -rf test2/ felix@felix-computer:~/test$
(6)、自定义回收站功能
命令:
先执行: myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } 再执行: alias rm='myrm'
输出:
felix@felix-computer:~/test$ myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } felix@felix-computer:~/test$ alias rm='myrm' felix@felix-computer:~/test$ mkdir -p test1/test2/test3 && touch {1,2,3,4}.txt felix@felix-computer:~/test$ ls 1.txt 2.txt 3.txt 4.txt test1 felix@felix-computer:~/test$ rm * moved to /tmp/回收站/2018_11_04_12_37_25 ok felix@felix-computer:~/test$ ls /tmp/回收站/2018_11_04_12_37_25 1.txt 2.txt 3.txt test1 felix@felix-computer:~/test$ ls felix@felix-computer:~/test$
说明:
a、 myrm() { D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); #在/tmp文件夹中建立名为“当前日期”的文件; #其中“date+%Y_%m_%d_%H_%M_%S”是规定了日期的输出格式; mkdir -p $D; #以变量D中的路径建立文件夹。 mv "$@" $D && echo "moved to $D ok"; #将所要删除的文件移入变量D中的文件夹内,移入成功后,输出移动成功。 } b、 alias rm='myrm' #命令别名定义方式,此定义成功后,不管输入rm或myrm系统都会作出相同操做。 c、 移入的是linux中的/tmp/目录下,该目录会自动定时清理,若是要恢复删除的文件,须要在清理以前恢复。好比Ubuntu系统是每次重启自动清理。 d、 若是想恢复rm为原来的rm操做,执行:alias rm=/bin/rm e、 自定义回收站的本质是mv操做,因此加的参数都是mv的参数
注意:若是须要每次使用rm命令都执行上述回收站功能,须要修改.bashrc 文件
在.bashrc 文件下面添加如下两行
myrm(){ D=/tmp/回收站/$(date +%Y_%m_%d_%H_%M_%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; } alias rm='myrm'
添加完后执行:source .bashrc