我不小心执行了sudo rm /*
而不是sudo rm ./*
在我想删除其内容的目录中,我基本上搞乱了我的系统。
ls
等基本命令都不起作用grep
,并且我的应用程序都没有打开,例如 chromium、slack、图像查看器等。
我尝试在互联网上查找我的问题并发现这问题,但那里的解决方案都不适合我。
我使用的是 Arch Linux 桌面,自从发生这种情况以来我还没有注销我的系统,因为我担心我将无法按照建议重新登录这里。另外,我没有 Arch Linux 镜像文件的实时 USB,如果有帮助的话。
任何关于我应该如何进一步使我的系统恢复正常的帮助,将不胜感激。谢谢!
编辑:我附加了一些命令的输出:
$ echo /*
/boot /dev /etc /home /lost+found /mnt /opt /proc /root /run /srv /sys /tmp /usr /var
$ echo /usr/*
/usr/bin /usr/include /usr/lib /usr/lib32 /usr/lib64 /usr/local /usr/sbin /usr/share /usr/src
另外,
echo /usr/bin/*
还给了我一长串格式的目录,/usr/bin/{command}
其中 {command} 是如果我没有搞乱系统的话我可以从终端运行的任何命令。
如果需要任何其他信息,请告诉我!
答案1
Arch Linux 在以下位置有四个符号链接/
:
bin -> usr/bin
lib -> usr/lib
lib64 -> usr/lib
sbin -> usr/bin
您应该能够重新创建它们(使用 Live-USB 或紧急 shell)或/
直接调用链接器(具有 root 权限并在工作目录中):
/usr/lib/ld-linux-x86-64.so.2 /usr/bin/ln -s usr/lib lib64
这应该会恢复正在运行的系统的基本功能。然后恢复其他符号链接应该很容易。
如果您没有root权限,您可以重新启动进入恢复外壳并解决那里的问题。
为什么/usr/bin/ls
其他命令会失败?
如果没有/lib64
符号链接,动态链接的程序将找不到动态链接器/加载器,因为路径被硬编码为/lib64/ld-linux-x86-64.so.2
(cf ldd /usr/bin/ln
)。
答案2
更正您的 PATH 变量,使其仅指向现有目录
PATH=/usr/bin:/usr/sbin
然后重新创建符号链接,如 terdon 的回答所示。
然后尝试从另一个终端登录。