所以……我做了坏事。在 Cygwin 中,我编写了一个 bash 脚本,它接收两个目录并将其中一个目录的内容复制到另一个目录中。首先,它调用“rm -rf”来删除第二个目录的内容。我不小心在没有提供第二个参数的情况下运行了脚本,看起来 Cygwin 将其视为可怕的“rm -rf /”。
我不确定损坏是什么,我正在尝试对其进行评估。因为它在我停止之前正在运行,所以我看到了很多“权限被拒绝”的消息。
最明显的损坏是我的 C:\cygwin64 文件夹被破坏了。里面只剩下几个空目录。我相信可能有一些按字母顺序排列在 cygwin64 之上的目录被删除,因为我不记得它是列表中的最高目录,现在是。
我的电脑运行 100% 正常,我还没有遇到任何奇怪的事情。我只想知道是否有人对 Cygwin 上的“rm -rf /”有任何经验,以及这是否会像在 Linux 上一样破坏您的整个驱动器。
部分难题在于 Cygwin 的根目录位于 c 驱动器下方,但它包含对“cygdrive”中 c 驱动器的引用。我想知道“rm -rf /”是否真的会彻底删除“/cygdrive”的所有内容,或者是否以某种方式受到保护。
编辑:附带说明,有人知道为什么“rm -rf”与“rm -rf /”相同。我清楚地记得没有提供路径并将该参数留空,所以我不知道为什么它在根目录上调用 rm 。
JDN*_*JDN 10
编辑:命令完成,然后我重新启动了虚拟机,所以我添加了更多照片。还更改了我的答案,以包括机器并未完全损坏的事实。
编辑 2:我还有 VM。如果您出于好奇想要我尝试任何东西,请在评论中告诉我。
编辑 3:我决定多做一些实验。我恢复到我在运行命令之前拍摄的快照,我在上面放了一个文件C:\cygwin夹,在下面放了一个文件夹。然后我运行了命令并且ctrl-c很快就完成了。cygwin 文件夹仍然存在(里面大部分是空的),但它上面的文件夹被删除了。它下面的用户生成的文件夹也完好无损。然后我恢复了状态并再次运行命令,这次在ctrl-c. 现在它删除了 cygwin 上面的文件夹、cygwin 本身和下面的文件夹。
当我在现实生活中的计算机上运行它时,该C:\cygwin64文件夹完好无损,这意味着它下面的所有内容按字母顺序排列都是安全的。这让我现在放心了,现在可以肯定地知道唯一被炸毁的文件夹是上面的文件夹,这些C:\cygwin64文件夹通常只是临时文件夹或其他一些非必要的文件夹。
TLDR: 不要跑步rm -rf /*或rm -rf /永远。
TLDR2: 我创建了一个 Windows 10 VM,安装了 Cygwin,然后运行了rm -rf /*. VM 搞砸了。回答我自己的问题:是的,它会删除它有权访问您硬盘驱动器上的所有内容。如果我没有像在我的真机上发生这种情况时那样快地取消命令,它就会删除我所有的个人文件。不过,通用操作系统仍然完好无损。
所以,我决定创建一个 Windows 10 VM 并从头开始尝试。这就是发生的事情。rm -rf /出于安全原因,Cygwin 不允许您这样做(有一个覆盖选项)……但rm -rf /*显然完全没问题,没有警告。
我意识到在我的原始脚本中,我删除了提供的目录中的所有文件,所以我使用了rm -rf $1/*, 所以如果$1是空的......可怕的破坏你的硬盘驱动器命令被执行,Cygwin 甚至没有警告你!
即将点击进入...
cygwin64 是第一个遭到破坏的
Windows 资源管理器链接消失了
开始菜单还在
有桌面图像!
通知中心还是可以的
小娜也是!
回收站坏了,但现在我可以访问 Windows 资源管理器了!
C:驱动器内容,这里没有太大变化
通用用户界面仍然工作正常
开始菜单不再响应
音乐生活!它是唯一的图书馆
命令已完成!
C 中没有太多新内容:
如果从可执行文件启动,应用程序仍然可以工作,应用程序数据仍然完整
我重新启动了机器。启动和登录没有问题。如果您单击它们的直接可执行文件,程序仍然可以工作。仍然可以访问互联网。很难评估永久性损坏。开始还是打不开。