rm:(remove)删除目录或文件,rm是常用的命令,该命令的功能为删除一个目录中的一个或多个文件或目录,它也可以将某个目录及其下的所有文件及子目录均删除。
rm是一个危险的命令,使用的时候要特别当心,尤其对于新手,否则整个系统就会毁在这个命令(比如在/(根目录)下执行rm * -rf)。所以,我们在执行rm之前最好先确认一下在哪个目录,到底要删除什么东西,操作时保持高度清醒的头脑。
1.命令格式:
rm [选项] 文件…
2.命令功能:
删除一个目录中的一个或多个文件或目录,如果没有使用- r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。
3.命令参数:
-f, –force 忽略不存在的文件,从不给出提示。
-i, –interactive 进行交互式删除
-r, -R, –recursive 指示rm将参数中列出的全部目录和子目录均递归地删除。
-v, –verbose 详细显示进行的步骤
–help 显示此帮助信息并退出
–version 输出版本信息并退出
4. 常用范例:
例1:管理员使用的是交互式删除
[root@localhost ~]#ls bin scf test [root@localhost ~]#rm test #不能删除目录,如果要删除目录,要加-r递归 rm: cannot remove `test': Is a directory [root@localhost ~]#touch a b c [root@localhost ~]#rm a #因为是管理员,这里的rm也是别名,使用的是交换的方式,会提醒是否删除 rm: remove regular empty file `a'? y [root@localhost ~]#ls b bin c scf test [root@localhost ~]#\rm b #如果使用/bin/rm命令,则不会进行提示,会直接删除,普通用户删除的时候不会提示 [root@localhost ~]#ls bin c scf test
alias显示
[root@localhost ~]#alias alias rm='rm -i'
例2:强制删除
[root@localhost ~]#ls a b bin c scf test [root@localhost ~]#rm -f a [root@localhost ~]#ls b bin c scf test
例3:递归删除,用于目录及子目录递归全部删除
[root@localhost ~]#rm -rv test rm: descend into directory `test'? y rm: remove directory `test/test1'? y removed directory: `test/test1' rm: remove directory `test'? y removed directory: `test' [root@localhost ~]#ls b bin c scf [root@localhost ~]#rm -rvf scf removed directory: `scf/lib' removed directory: `scf/doc/info' removed directory: `scf/doc/product' removed directory: `scf/doc' removed directory: `scf/bin' removed directory: `scf' [root@localhost ~]#
例4:危险操作,需谨慎,强制递归删除
[root@localhost ~]#mkdir -pv scf/{lib/,bin/,doc/{info,product}} mkdir: created directory `scf' mkdir: created directory `scf/lib/' mkdir: created directory `scf/bin/' mkdir: created directory `scf/doc' mkdir: created directory `scf/doc/info' mkdir: created directory `scf/doc/product' [root@localhost ~]#ls b bin c scf [root@localhost ~]#rm -rf scf #强制递归删除 [root@localhost ~]#ls b bin c
例5:自杀
[root@localhost ~]#rm -rf /*
例6:自定义回收站,比较保险,一般用这个命令代替rm命令,别名可以放在配置文件中,开机自启
[root@localhost ~]#cd /usr/local [root@localhost /usr/local]#vim rmfiles.sh #自己写个脚本 [root@localhost /usr/local]#cat rmfiles.sh #!/bin/bash myrm(){ D=/tmp/$(date +%Y%m%d-%H%M%S) mkdir -p $D mv "$@" $D && echo "moved to $D ok" } myrm $@ [root@localhost /usr/local]#chmod +x rmfiles.sh [root@localhost /usr/local]#alias rmfile="/usr/local/rmfiles.sh" [root@localhost /usr/local]#alias alias rmfile='/usr/local/rmfiles.sh' [root@localhost ~]#mkdir -pv scf/{lib/,bin/,doc/{info,product}} #测试 mkdir: created directory `scf' mkdir: created directory `scf/lib/' mkdir: created directory `scf/bin/' mkdir: created directory `scf/doc' mkdir: created directory `scf/doc/info' mkdir: created directory `scf/doc/product' [root@localhost ~]#ls b bin c scf [root@localhost ~]#rmfile scf moved to /tmp/20170313-172921 ok [root@localhost ~]#tree /tmp/20170313-172921/ /tmp/20170313-172921/ └── scf ├── bin ├── doc │ ├── info │ └── product └── lib 6 directories, 0 files
例7:删除的时候提示参数过长
find . -name "*" -print | xargs rm -rf 如果文件名或文件夹名中有空格使用下列方法 find . -name "today*" -print0 | xargs -0 rm -rf 参数-print0,于默认的-print相比,输出的序列不是以空格分隔,而是以null字符分隔。而xargs也有一个参数-0,可以接受以null而非空格间隔的输入流
–
–
–
评论前必须登录!
注册