rm命令


功能说明

    Linuxrm命令是删除文件和目录的。在使用-rf参数时,一定要注意,因为该目录和文件都会被删除,删除一个目录中的一个或多个文件或目录,如果没有使用-r选项,则rm不会删除目录。如果使用 rm 来删除文件,通常仍可以将该文件恢复原状。用法如下:

  rm [选项] 文件…

命令参数

选项含义
-f强制的意思,忽略不存在的文件,从不给出提示
-i进行交互式删除
r -R指示rm将参数中列出的全部目录和子目录均递归地删除
-v详细显示进行的步骤

删除目录:rm -rf /PATH/TO/DIR

危险操作:rm -rf /*(6和7有提示,5没有)

注意:所有不用的文件建议不要直接删除,而是移动至某个专用目录:(模拟回收站),下面第4个例子,也是一种模拟回收站的方法。

示例

    使用-i参数,删除前提示

[root@www ~]# cd /tmp

[root@www tmp]# rm -i bashrc                  #加入-i参数,删除时就会主动询问,避免删错文件

rm: remove regular file `bashrc'? y               

[root@www tmp]# rm -i bashrc*                 #使用通配符,将tmp下以bashrc开头的文件全部删除

rm: remove regular file `bashrc_hlink'? y

rm: remove symbolic link `bashrc_slink'? y

rm: remove regular file `bashrc_slink_1'? y

rm: remove symbolic link `bashrc_slink_2'? y

    使用-r递归删除

[root@www tmp]# rmdir /tmp/etc            #不能删除,因为目录不为空,rmdir只能删除空目录

rmdir: failed to remove `/tmp/etc': Directory not empty      

[root@www tmp]# rm -r /tmp/etc            #按y确认,按ctrl+c退出

rm: descend into directory `/tmp/etc'? ^C 

因为身份是 root ,默认已经加入了 -i 的选项,所以你要一直按 y 才会删除!

如果不想要继续按 y ,可以按下『 [ctrl]-c 』来结束 rm 的工作。

这是一种保护的动作,如果确定要删除掉此目录而不要询问,可以这样做:          

[root@www tmp]# /rm -r /tmp/etc

在命令前加上反斜线,可以忽略掉 alias 的指定选项              

    -f参数,强制删除,系统不提示

[root@www tmp]# rm -f test.log

    自定义回收站功能

[root@www tmp]# myrm(){ D=/tmp/$(date +%Y%m%d%H%M%S); mkdir -p $D; mv "$@" $D && echo "moved to $D ok"; }

[root@www tmp]# alias rm='myrm'

[root@www tmp]# touch 1.log 2.log 3.log

[root@www tmp]# ll

total 0

-rw-r--r-- 1 root root 0 Apr  7 14:19 1.log

-rw-r--r-- 1 root root 0 Apr  7 14:19 2.log

-rw-r--r-- 1 root root 0 Apr  7 14:19 3.log

[root@www tmp]# rm [123].log

moved to /tmp/20160407142017 ok

[root@www tmp]# ls /tmp/20160407142017/

1.log  2.log  3.log

    删除以-开头的文件

[root@www tmp]# touch ./-bbb-

[root@www tmp]# ls -l

total 0

-rw-r--r-- 1 root root 0 Apr  7 14:26 -bbb-

[root@www tmp]# rm -bbb-

mv: invalid option -- '-'

Try `mv --help' for more information.

[root@www tmp]# rm ./-bbb-

moved to /tmp/20160407142651 ok

[root@www tmp]#