Linux运维基础之rm和rmdir命令详解

Linux运维基础之rm和rmdir命令详解

要在 Linux 中删除文件或文件夹,使用的 Linux 命令是 rmrmdir。rm 命令的意思是 “remove”,用于删除文件和目录。通过使用各种选项,你可以删除文件、目录,甚至是目录中的内容。例如,rm filename 会删除一个文件,而 rm -r directoryname 会删除一个目录及其所有内容。

rmdir 命令代表 “删除目录”,专门用于删除空目录。如果目录中包含任何文件或子目录,rmdir 命令将不会删除它,并会显示一条错误信息。相比之下,带有 -r 选项的 rm 命令可以删除非空目录。从本质上讲,rm 的用途更广泛,而 rmdir 更专门用于删除空目录。

在这篇文章中,我们将介绍使用 rmrmdir 的不同方法。

如何使用 rm

1. 删除一个文件

rm [file]

rm 命令用于删除单个文件。为此,请键入 rm,然后输入要删除的文件名。

示例:

下面的命令用于删除名为 example.txt 的特定文件,该文件位于名为 myfolder 的目录中。

rm myfolder/example.txt

下面举例说明其工作原理:

  1. 假设你有一个名为 myfolder 的目录,目录中有一个名为 example.txt 的文件。
  2. 运行命令 rm myfolder/example.txt
  3. myfolder 中的文件 example.txt 将被删除,默认情况下终端中不会显示任何输出信息。
  4. 如果你再次尝试访问文件 example.txt,就会收到类似 “No such file or directory” 的错误信息。

在运行该命令之前,如果有

myfolder/
└── example.txt

运行命令后,结构如下:

myfolder/

2. 无需确认即可删除文件

rm -f [file]

该选项允许用户无需确认即可删除受写保护的文件。

示例:

假设当前目录中有一个名为 file1.txt 的文件,你想删除它。可以运行以下命令

rm -f file1.txt

由于使用了 -f 选项,因此不会有确认提示,文件将被立即删除。如果操作成功,终端将不会显示任何输出。如果之后尝试查看目录内容,会发现 file1.txt 已不复存在。

3. 删除多个文件

rm [file1] [file2] [file3]

使用 rm 命令,以文件名作为参数,一次删除多个文件。

示例:

在运行该命令前,假设你的目录中有以下文件:

file1.txt
file2.txt
file3.txt
otherfile.txt

你运行了 rm file1.txt file2.txt file3.txt 命令。

运行该命令后, file1.txtfile2.txt, 和 file3.txt 文件被删除,你的目录现在看起来像这样:

otherfile.txt

4. 显示输出信息

rm -v [filename]

通过 -v (verbose)选项,可以获取有关删除内容的信息。

示例:

当你执行 rm -v example.txt 命令时,会得到以下输出结果:

removed 'example.txt'

在这个例子中,文件 example.txt 被删除,系统会打印一条确认文件已被删除的信息。如果文件不存在,则会出现类似 rm: cannot remove 'example.txt': No such file or directory 的错误信息。

5. 删除文件前提示确认

rm -i [filename]

该选项用于在删除文件前要求确认。输入 y (是)确认,输入 n (否)停止。

示例:

假设您有一个名为 example.txt 的文件,并运行了该命令:

rm -i example.txt

系统将提示您类似这样的信息:

remove regular file 'example.txt'?

然后你需要键入 y (表示是)或 n (表示否)来确认或拒绝删除。如果键入 y 并按 Enter 键,文件 example.txt 将被删除。如果键入 n ,文件将保持不动。

remove regular file 'example.txt'? y

之后,如果您用 ” y ” 确认, example.txt 将被删除。

如何使用 rmdir

该命令既可以删除目录,也可以删除目录中的文件。除了不能用来删除文件外,它与 rm -r 命令没有明显区别。

rmdir 命令的一般语法:

$ rmdir [OPTION...] [DIRECTORY...]

1. 删除一个目录

rmdir [directory]

使用此命令可删除一个目录,但只有当该目录为空时才会被删除。

示例:

假设你有一个名为 myfolder 的目录,但它是空的。运行命令:

rmdir myfolder

目录 myfolder 将被删除,如果操作成功,则不会有任何输出信息。

但是,如果 myfolder 不为空或不存在,则会收到一条错误信息。例如,如果 myfolder 包含文件或子目录,你可能会看到:

rmdir: failed to remove 'myfolder': Directory not empty

或者如果 myfolder 不存在:

rmdir: failed to remove 'myfolder': No such file or directory

2. 删除多个目录

rmdir [folder1] [folder2] [folder3]

该命令允许您同时删除多个目录,但所有目录都必须为空。

示例:

Linux 中的 rmdir folder1 folder2 folder3 命令试图删除名为 folder1folder2, 和 folder3 的目录。只有当这三个目录都为空时,这条命令才会成功;否则,系统将显示一条错误信息。

下面是一个示例,说明如何执行该命令:

如果 folder1folder2, 和 folder3 都是空目录,命令将删除它们,不会有任何输出信息。

如果其中任何一个目录不是空目录或不存在,则会针对每个有问题的目录显示错误信息。

folder2 不为空时的输出示例:

rmdir: failed to remove 'folder2': Directory not empty

在这种情况下,folder1 和 folder3  如果是空的,仍会被移除,但 folder2 将保持不变。

3. 删除父目录

rmdir -p [directory-path]

选项 -p 会删除指定目录及其父目录。

示例:

下面举例说明 rmdir -p folder_a/folder_b 命令是如何工作的:

假设你有一个这样的目录结构:

folder_a
└── folder_b

如果 folder_a 和 folder_b 都是空的,运行 rmdir -p folder_a/folder_b 命令将首先删除 folder_b,然后,由于 folder_a 变为空的,它也将删除 folder_a

如果 folder_a 或 folder_b中有任何文件或子目录,该命令将不会删除它们,你会收到类似的错误信息:

rmdir: failed to remove 'folder_a/folder_b': Directory not empty

在成功的情况下,不会有任何输出,两个目录都会被删除。

更多 Linux 命令

下面罗列了最常见的一些 Linux 命令,您可以根据自己的需要查阅对应命令的详细解析:

目录操作 rmdir · cd · pwd · exa · ls
文件操作 cat · cp · dd · less · touch · ln · rename · more · head
文件系统操作 chown · mkfs · locate
网络 ping · curl · wget · iptables · mtr
搜索和文本处理 find · grep · sed · whatis · ripgrep · fd · tldr
系统信息和管理 env · history · top · who · htop · glances · lsof
用户和会话管理 screen · su · sudo · open

此外,我们还整理 Linux 命令行大全,以帮助大家全面深入地学习 Linux。

评论留言