rm 命令
rm 命令可能是您最早学习的命令之一。在这里,我们介绍一些可以节省您大量时间的选项。在我们深入细节之前,先提出一些警告。按照 Unix 的传统,Linux 不会问不必要的问题。如果您告诉它删除一个文件或一组文件,它就会这样做。如果您希望它要求您确认,您需要明确地要求它这样做。
rm 的基本语法是
rm [options] filenames
选项必须以 - 开头。可以指定一个或多个文件名,并且允许使用通配符(因为由 shell 而不是 rm 展开它们)。
如果您不熟悉通配符(* 和 ? 是最危险的),请阅读相关资料。不小心在文件名列表中放置通配符可能会让您非常不愉快。
在 Linux 术语中,rm 命令用于取消链接文件。这意味着删除文件的目录条目。一个副作用(也是我们通常期望的效果)是删除该文件。但这可能并非总是如此。
Linux 文件系统允许一个文件拥有多个名称或目录条目。 ln 命令允许您创建这些额外的名称或链接。如果这些链接是硬链接,即使用不带 -s 选项的 ln 命令创建的链接,那么您就拥有一个可以通过多个名称访问的文件。
通过对其中一个名称使用 rm 命令,您只会删除该名称,而不是实际文件。当指向该文件的最后一个名称被删除时,该文件最终才会被删除。
现在您已经了解了基本知识,还有许多选项可以实现的功能不仅仅是删除文件。对于胆小的人来说,一个方便的选项是 -i。 -i 代表交互式。指定此选项后,rm 将在删除每个文件之前提示您。如果您用 y 或 Y 回应,则该文件将被删除,否则将跳过删除。
例如,如果您输入
rm -i dog cat pig
您将收到以下提示:
rm: remove `dog'?
按 y 或 Y 以及 <return> 将导致文件 dog 被删除。无论您按下了什么,rm 都会继续处理下一个文件,在本例中是 cat,并再次提示。
通常,如果 rm 遇到您没有写权限的文件,但您有权修改该文件的目录,它会要求确认。 然后,您输入 y 或 Y,然后按 <return> 以强制删除该文件。 -f 选项会覆盖此默认行为。 如果您指定 -f,rm 将执行删除操作,而无需提示。 如果找不到指定的文件,此选项还可以消除 rm 通常产生的错误消息。
现在,是可怕的选项,-r。 -r 代表递归。 如果您指定一个目录名和 -r 选项,rm 将删除指定的目录及其所有内容,包括其中包含的任何子目录(以及子目录的文件和子目录等等)。 例如,如果您的当前目录中有一个名为 Joe 的目录,其中包含文件 name address phone 和一个包含文件 ssn 和 age 的目录 Other,您可以使用以下命令单独删除每个文件:
rm Joe\name Joe\address Joe\phone Joe\Other\ssn\ Joe\Other\age
然后,您可以使用 rmdir 命令删除目录 Other 和 Joe
rmdir Joe/Other Joe
命令
rm -r Joe
最后,一个小技巧。 人们经常遇到的一个问题是如何删除名称以 - 开头的文件。 例如,如果您输入命令
rm -garbagefile
试图删除名为 -garbagefile 的文件,您会收到错误消息
rm: illegal option -g
尝试 rm -help 以获取更多信息。
这是因为 rm 假设如果它的第一个参数以 - 开头,则它是一个选项。 解决方案是使用一个不会混淆 rm 的名称。 例如,您可以使用文件的完整路径名,也可以使用显式指定当前目录的相对路径名,方法是使用 ./。 因此,以下命令可以完成这项工作
rm ./-garbagefile
Phil Hughes 是 Linux Journal 的出版商。