[一天几个linux命令] rm

rm - 删除文件或目录

文档介绍

rm删除指定的每个文件。默认的,它不会删除目录
如果指定了-I(大写的i) 或者–interactive=once,或者指定了超过三个文件,或者-r, -R, –recursive被指定,rm会寻问用户是否要删除给定的文件。如果用户反馈不是肯定的,那么命令会终止。

另外,如果一个文件不可写,在终端是个标准的输入,或没有指定-f, –force参数,或者-i, –interactive=always参数被指定,rm会提示用户是否删除文件。如果用户反馈的不是肯定的回答,此文件会被跳过

语法

rm [OPTION]… FILE…
-f, –force 忽略不存在的文件或参数,从不提示
-i,在删除之前,总会提示
-I,如果删除超过三个文件会仅提示一次
–interactive[=WHEN] 跟据WHEN提示:never 从不, once 一次(-I) 或者 always总是(-i), 如果没有指定WHEN,总是提示
-r, -R, –recursive 递归的删除目录和它的内容
-d, –dir 删除空目录
-v, –verbose 解释此命令都干了什么

默认的,rm不会删除目录。使用–recursive(-r 或 -R)参数删除给定的目录和目录中的内容

要删除一个以’-‘开头的文件,例如’-foo’,使用下面给出的命令之一:

rm -- -foo
rm ./-foo

举列

将/tmp 中的bashrc 删除掉

mac版本的(可能与centos版本的有点不同)
sh-3.2# rm -i bashrc
remove bashrc? y
sh-3.2# ls bashrc*
ls: bashrc*: No such file or directory

通过通配符*的帮忙,将/tmp下面开头为bashrc的文件全部删除掉

#先新建几个bashrc有关的文件和目录
sh-3.2# touch bashrc
sh-3.2# touch bashrc2
sh-3.2# touch bashrc3
sh-3.2# touch bashrc4
sh-3.2# mkdir bashrc5

#用通配符删除
#默认仅会删除文件,不会删除目录
sh-3.2# rm bashrc*
rm: bashrc5: is a directory
sh-3.2# ls -al | grep bashrc
drwxrwxr-x  2 root      wheel       68  5 30 13:57 bashrc5

将/tmp 下的/etc2/目录删除

#新建指定的目录
sh-3.2# mkdir etc2
sh-3.2# mkdir etc2/a
sh-3.2# mkdir etc2/2
sh-3.2# mkdir etc2/c
sh-3.2# ls -al etc2
total 0
drwxrwxr-x   5 root  wheel  170  5 30 14:06 .
drwxrwxrwt  10 root  wheel  340  5 30 14:06 ..
drwxrwxr-x   2 root  wheel   68  5 30 14:06 2
drwxrwxr-x   2 root  wheel   68  5 30 14:06 a
drwxrwxr-x   2 root  wheel   68  5 30 14:06 c

#试着删除,删除不掉,因为这不是空的目录
sh-3.2# rm etc2
rm: etc2: is a directory

#加上-r参数, 删除成功
sh-3.2# rm -r etc2
sh-3.2# ls etc2
ls: etc2: No such file or directory

删除一个带有-开头的文件

sh-3.2# touch ./-aaa-
sh-3.2# touch -- -bbb--
sh-3.2# rm ./-aaa-
sh-3.2# rm -- -bbb--

总结

文件名最好不要使用“-”号开头,因为“-”后面接的是参数,因此,单纯使用“rm -aaa–” 系统的命令就会被误判。那如果使用后面全谈到的正则表达式时,还是会出问题。所以,只能用避过首位字符是“-”的方法,就是加上本目录“./”即可。如果man rm的话,其实还有一种方法,那就是“rm – -aaa-”也可以

参考文献

《鸟哥的私房菜-基础学习篇》
《centos手册》

你可能感兴趣的:(linux)