📜  Linux 中的 rm 命令和示例

📅  最后修改于: 2022-05-13 01:57:33.200000             🧑  作者: Mango

Linux 中的 rm 命令和示例

rm 在这里代表删除。 rm 命令用于从 UNIX 等文件系统中删除文件、目录、符号链接等对象。更准确地说, rm 从文件系统中删除对对象的引用,这些对象可能有多个引用(例如,具有两个不同名称的文件)。默认情况下,它不会删除目录。

此命令通常以静默方式运行,您在运行rm命令时应非常小心,因为一旦删除文件,您将无法恢复文件和目录的内容。

句法:

rm [OPTION]... FILE...

让我们考虑名称为a.txt、b.txt等直到e.txt 的5 个文件。

$ ls
a.txt  b.txt  c.txt  d.txt  e.txt
Removing one file at a time
$ rm a.txt

$ ls
b.txt  c.txt  d.txt  e.txt

Removing more than one file at a time
$ rm b.txt c.txt

$ ls
d.txt  e.txt

注意: rm不产生任何输出,因为它通常只在出现错误时生成消息。



选项:

1. -i(交互式删除):与 cp 一样,-i 选项使命令在删除每个文件之前要求用户确认,您必须按y确认删除,任何其他键都不会删除文件。

$ rm -i d.txt
rm: remove regular empty file 'd.txt'? y

$ ls
e.txt

2. -f(强制删除):如果文件被写保护, rm会提示确认删除。 -f选项会覆盖此次要保护并强制删除文件。

$ ls -l
total 0
-r--r--r--+ 1 User User 0 Jan  2 22:56 e.txt

$ rm e.txt
rm: remove write-protected regular empty file 'e.txt'? n

$ ls
e.txt

$ rm -f e.txt

$ ls


注意: rm 命令的 -f选项不适用于写保护目录。

3. -r(递归删除):
带有-r(或-R)选项的rm命令执行树遍历,将递归删除父目录的所有文件和子目录。在每个阶段,它都会删除它找到的所有内容。通常, rm不会删除目录,但与此选项一起使用时,它将删除。

下面是目录和文件的树:

$ ls
A

$ cd A

$ ls
B  C

$ ls B
a.txt  b.txt

$ ls C
c.txt  d.txt

现在,从A目录(作为父目录)删除将如下完成:

$ rm *
rm: cannot remove 'B': Is a directory
rm: cannot remove 'C': Is a directory

$ rm -r *

$ ls


A目录中的每个目录和文件都被删除。

4. –version:此选项用于显示您系统上当前运行的 rm 版本。

$ rm --version
rm (GNU coreutils) 8.26
Packaged by Cygwin (8.26-2)
Copyright (C) 2016 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later .
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.

Written by Paul Rubin, David MacKenzie, Richard M. Stallman,
and Jim Meyering.

wc 命令的应用

删除名称以连字符 (-)开头的文件:要删除名称以短划线 (“-”) 开头的文件,您可以在文件名前单独指定双短划线 (“-”)。这个额外的破折号是必要的,这样 rm 就不会将文件名误解为一个选项。假设他们是一个文件名-file.txt ,删除此文件写入命令为:

$ ls
-file.txt

$ rm -file.txt
rm: unknown option -- l
Try 'rm ./-file.txt' to remove the file '-file.txt'.
Try 'rm --help' for more information.

$ rm -- -file.txt

$ ls