1 删除文件
rm
rm命令(remove的简写)用来删除文件。这条命令会彻底地删除文件,文件将不复存在。Linux命令行可没有“垃圾箱”或“回收站”之类的东西。你正在走钢丝,一不小心掉下来,就完蛋了。
好吧,这样说有点极端了。shell缺少一个恢复删除文件的命令,这的确是真的。但是如果你错误地删除了文件,也并不意味着完全没有办法。如果你在意识到犯错的瞬间就马上停止使用机器,如果操作系统还没有重写被删除文件所占用的扇区,再加上如果你能够成功地使用某些相当复杂的文件恢复软件,还是有可能恢复误删除的文件的。但是这个过程一点儿乐趣都没有,整个过程都会让你坐如针毡。最好一开始就小心些。
另一方面,如果你想确保绝对没有人能恢复你删除的文件,即便是顶级高手也不可以恢复,请使用shred命令来代替rm命令。shred命令会重写文件多达25次,所以再想恢复被删除的文件是不可能的事。但是在使用shred命令之前应该阅读一下man page,因为它的成功率在很大程度上依赖于你正在使用的文件系统的类型。
使用rm命令很简单,甚至有些人可能会认为太容易了。
$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg pool_03.jpg
pool_01.jpg_bak pool_03.jpg_bak
$ rm pool_01.jpg_bak
$ ls
pool_01.jpg pool_03.jpg pool_03.jpg_bak
2 使用通配符一次删除多个文件
rm *
使用像“*”这样的通配符,只需要按一下键盘,就能删除多个文件。
$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg pool_03.jpg
pool_01.jpg_bak pool_03.jpg_bak
$ rm *_bak
$ ls
pool_01.jpg pool_03.jpg
警告 使用通配符删除文件的时候一定要非常、非常、非常小心,否则有可能删除很多你原本不想删除的文件。一个典型的例子是,应该输入rm *txt而不是rm * txt(看到错误的空格没有?)。这个错误的命令并非只删除所有的文本文件,“*”意味着要删除所有文件,接着再试图删除一个名为txt的文件。完全是两个含义
3 删除文件时显示执行过程
rm -v
如果你想知道rm命令执行时到底在做什么,可以使用-v(或--verbose)选项。
$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg pool_03.jpg
pool_01.jpg_bak pool_03.jpg_bak
$ rm -v *_bak
removed 'pool_01.jpg_bak'
removed 'pool_03.jpg_bak'
$ ls
pool_01.jpg pool_03.jpg
4 防止删除重要文件
rm -i
-i选项(或--interactive)可以提供一定的安全机制。在删除每个文件之前,它会先询问你是否要删除。当你作为root用户运行系统的时候,这可是个好东西!
$ pwd
/home/scott/libby/by_pool/lieberman_pool
$ ls
pool_01.jpg pool_03.jpg
pool_01.jpg_bak pool_03.jpg_bak
$ rm -i *_bak
rm: remove regular file 'pool_01.jpg_bak'? y
rm: remove regular file 'pool_03.jpg_bak'? y
$ ls
pool_01.jpg pool_03.jpg
当rm命令询问你要如何做的时候,y表示同意删除文件,n表示忽略这个文件,并继续处理下一个文件。