如何在 Linux 中恢复或恢复已删除的命令

在这个简短的教程中,我们将学习如何在 Linux 中使用恢复或恢复已删除的命令 coreutilsbusybox.

我们通常使用 rm 在 Linux 中删除东西的命令,对吗? 是的。 如果我们使用 rmrm rm? 换句话说,如果我们删除 /bin/rm 文件使用 rm 命令? 我一直想知道如果我真的在 Linux 机器上这样做会发生什么。 所以我快速启动了一个 Ubuntu VM 并删除了 /bin/rm 通过运行以下命令来创建文件:

$ sudo rm /bin/rm

我以为我可以轻松恢复已删除的 rm 通过重新安装命令 Gnu coreutils 包,因为 rm 命令是一部分 coreutils 包,不是吗?

所以我尝试重新安装 coreutils 包使用 apt 包管理器如下:

$ sudo apt install --reinstall coreutils

哦,伙计,我错了! 这 apt 包管理器需要 rm,所以它不能重新安装 coreutils 包裹。

Reading package lists... Done Building dependency tree        Reading state information... Done 0 upgraded, 0 newly installed, 1 reinstalled, 0 to remove and 0 not upgraded. Need to get 1249 kB of archives. After this operation, 0 B of additional disk space will be used. Get:1 https://in.archive.ubuntu.com/ubuntu focal/main amd64 coreutils amd64 8.30-3ubuntu2 [1249 kB] Fetched 1249 kB in 2s (747 kB/s)     dpkg: warning: 'rm' not found in PATH or not executable dpkg: error: 1 expected program not found in PATH or not executable Note: root's PATH should usually contain /usr/local/sbin, /usr/sbin and /sbin E: Sub-process /usr/bin/dpkg returned an error code (2)
dpkg: 警告: ‘rm’ 在 PATH 中未找到或不可执行

我也尝试从源代码编译它,但它也不起作用,因为 Makefile 用途 rm. 直到现在,我不知道重新安装是不可能的 rm 命令。

我认为恢复已删除的命令很简单。 但是,在这种特殊情况下,我无法恢复 rm 命令。 最终我在几次网络搜索后找到了解决方案。 如果您曾经不小心删除 rm 命令(我希望你不会),你可以使用以下任何一种方法来恢复它。 不只是 rm 命令,您可以使用此过程恢复几乎所有由 coreutils 包裹。

免责声明:

不得在生产系统上执行此操作. 它仅用于教育目的!

使用 coreutils 在 Linux 中恢复已删除的命令

对于不知道的人, Gnu coreutils 包提供了基本的核心命令,例如 cat, ls, rm, mkdir, rmdir, touch, 还有很多。 大多数 GNU/Linux 发行版都预装了它。

恢复已删除的 rm 命令,首先创建一个空的二进制文件,名字为 "rm" 在下面 /bin/ 地点:

$ sudo touch /bin/rm

使其可执行:

$ sudo chmod +x /bin/rm

下载 coreutils 使用命令打包:

$ apt download coreutils

请注意,我们无法重新安装 coreutils 但下载它。 此外,我们不需要使用 sudo 下载软件包的权限。

使用以下内容解压下载的包 dpkg 命令:

$ sudo dpkg --unpack coreutils_8.30-3ubuntu2_amd64.deb

上面的命令只是解压 coreutils 包,但不会配置它。

使用 coreutils 包在 Linux 中恢复已删除的命令

完毕! 现在,您可以开始使用 rm 命令。 验证功能是否正常 rm 命令恢复后,只需删除任何不需要的文件。 比如我删了 coreutils 我之前下载的包:

$ rm coreutils_8.30-3ubuntu2_amd64.deb 
Linux下使用rm命令删除文件Linux下使用rm命令删除文件

伟大的! 有用!

而且,请永远不要在生产系统上这样做!!

在 Linux 中使用 busybox 恢复已删除的命令

忙箱 是一个软件套件,它将许多常见的 UNIX 实用程序提供到一个小的可执行文件中。 它提供了您通常在 GNU fileutils、shellutils 等中找到的大多数实用程序的替代品。默认情况下,它在 Debian 及其衍生产品(如 Ubuntu 和许多其他 Linux 发行版)中可用。

您可以查看由提供的核心命令行实用程序列表 busybox 使用命令:

$ busybox --list

示例输出:

[ [[ acpid adjtimex ar arch arp arping ash awk basename bc blkdiscard blockdev brctl bunzip2 busybox bzcat bzip2 cal cat [..]
列出 busybox 命令行实用程序列出 busybox 命令行实用程序

在我的 Ubuntu 20.04 LTS 桌面中,busybox 提供了 263 命令行实用程序。

现在让我们恢复已删除的 rm 通过临时创建一个命令 符号链接 到它。 运行以下命令临时符号链接 /bin/rm/bin/busybox

$ ln -s busybox /bin/rm

然后重新安装 coreutils 使用命令打包:

$ sudo apt install --reinstall coreutils

就是这样。 上面的命令将恢复 rm 命令。

如前所述,此程序不仅用于恢复 rm 命令。 我想我们可以使用这些方法恢复几乎所有的 Linux 命令。 自己在虚拟机上检查一下,看看它是否有效! 再次, 不要在生产系统中这样做. 你被警告了!

  • 在 Linux 中恢复 chmod 命令的可执行权限
  • Moreutils – 更有用的 Unix 实用程序的集合

APTbusyboxCoreutilsdpkgGnu CoreutilsLinuxLinux 命令Linux 提示Linux 故障排除Ubuntu