安全删除文件和目录

LinuxBeginner
立即练习

简介

创建东西很有趣,但有时也需要清理它们。

在 Windows 或 macOS 中,删除的文件会进入「回收站」,之后仍然可以恢复。 Linux 则不同。 在终端中删除文件后,文件会立即永久消失。

可以把 Linux 的 rm 命令想象成一台碎纸机。文件一旦被送进去,就没有「撤销」按钮了。

这是命令行的强大功能第一次显得危险的场景之一。除非工具经过专门配置,否则 shell 通常不会询问「你确定吗?」Linux 默认认为你输入的内容就是你的真实意图。

在本实验中,你将学习如何:

  1. 删除单个文件(rm)。
  2. 安全删除空目录(rmdir)。
  3. 强制删除包含内容的目录(rm -rf)。

删除文件

先练习删除一个文件。

首先,查看当前目录中的内容:

ls -l

你应该能看到 file_to_delete.txt。

现在使用碎纸机删除它。这里使用 rm 命令(remove 的缩写)。

rm file_to_delete.txt

如果命令执行成功,终端不会显示任何内容,只会直接完成删除操作。

检查该文件是否还存在:

ls -l

文件已经消失了。

重要: 按 Enter 键之前,务必再次确认文件名。删除后无法恢复。

这项注意事项不仅适用于初学者。即使是经验丰富的管理员,在执行破坏性命令前也会放慢速度,尤其是在以 root 身份操作或使用通配符时。

删除空目录

现在尝试删除一个目录。当前有一个名为 empty_dir 的目录。

对于空目录,Linux 提供了一个安全工具:rmdir(Remove Directory,删除目录)。

rmdir empty_dir

确认该目录已经消失:

ls -F

删除成功了!不过,如果目录中包含任何内容,rmdir 会拒绝删除该目录。这就是一个安全锁。

尝试使用 rmdir 删除包含文件的 data_dir:

rmdir data_dir

你应该会看到以下错误:rmdir: failed to remove 'data_dir': Directory not empty。这是 Linux 在保护你,避免意外丢失数据。

这种行为使 rmdir 成为相对安全的工具。它只会删除已经为空的目录,因此当你需要一个内置安全边界的删除命令时,使用它很合适。

递归删除

有时,你可能需要彻底删除整个目录及其所有内容。

要删除目录以及其中的所有内容,可以为 rm 命令添加两个功能强大的选项:

  1. -r(递归):进入每一个子目录。
  2. -f(强制):不进行询问。

组合使用后,它们就构成了「推土机」:rm -rf。

在 Linux 文化中,人们经常讨论这个组合,因为它功能强大,也很容易误用。一个小小的输入错误就可能完全改变目标,因此人们对 rm -rf 格外谨慎。

现在彻底删除 data_dir:

rm -rf data_dir

确认删除结果:

ls

其中的内容已经全部消失。

警告: rm -rf 是 Linux 中最危险的命令。如果对错误的目录运行该命令,就很难恢复。务必再次检查拼写!

更深层的教训是命令的作用范围。在对破坏性命令按下 Enter 键之前,必须明确 shell 将要操作的具体路径和匹配模式。

总结

你已经学会了如何清理系统。

  • rm file:碎纸机,用于删除文件。
  • rmdir dir:安全删除工具,用于删除空目录。
  • rm -rf dir:推土机,用于删除包含内容的目录。

能力越大,责任越大。请谨慎使用 rm -rf!

在本模块的最后一个实验中,你将学习如何使用通配符批量选择文件。