所以...我做了一件坏事。在 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。
答案1
编辑:命令完成后,我重新启动了虚拟机,因此我添加了更多照片。还更改了我的答案,以说明该机器没有完全遭受重击。
编辑2:我还有 VM。如果您出于好奇想让我尝试一下,请在评论中告诉我。
编辑3:我决定再多做一点实验。我恢复到运行命令之前拍摄的快照,将一个文件夹放在上面C:\cygwin
,将一个文件夹放在下面。然后我运行命令,ctrl-c
很快就完成了。cygwin 文件夹仍然存在(里面大部分是空的),但其上方的文件夹已被删除。其下方的用户生成文件夹也完好无损。然后我恢复状态并再次运行命令,这次运行的时间稍长一些ctrl-c
。现在它删除了 cygwin 上方的文件夹、cygwin 本身以及下方的文件夹。
当我在现实生活中的计算机上运行此程序时,C:\cygwin64
文件夹完好无损,这意味着按字母顺序排列在其下面的所有内容都是安全的。这让我现在放心了,因为我可以肯定,唯一被破坏的文件夹是上面的文件夹C:\cygwin64
,它们通常只是临时文件夹或其他一些非必要的文件夹。
总结: rm -rf /*
永远不要跑rm -rf /
。
TLDR2: 我创建了一个 Windows 10 VM,安装了 Cygwin,然后运行rm -rf /*
。VM 变得一团糟。回答我自己的问题:是的,它会删除硬盘上它有权访问的所有内容。如果我没有像在真实机器上发生这种情况时那样迅速取消命令,它就会删除我所有的个人文件。不过,一般操作系统仍然完好无损。
因此,我决定创建一个 Windows 10 VM 并从头开始尝试。事情是这样的。出于安全原因,Cygwin 不允许您这样做rm -rf /
(有一个覆盖选项)...但rm -rf /*
显然没有任何警告,这完全没问题。
我意识到在我的原始脚本中我删除了所提供目录中的所有文件,因此我使用了rm -rf $1/*
,所以如果$1
为空...可怕的破坏硬盘命令就会执行,而 Cygwin 甚至不会警告你!
即将按下回车键...
cygwin64 是第一个受到重创的
Windows 资源管理器链接消失
开始菜单仍在这里
桌面图像就这样出现了!
通知中心仍然正常
Cortana 也一样!
回收站坏了,但现在我可以访问 Windows 资源管理器!
C:驱动器内容,这里没有太大变化
常规用户界面仍运行良好
开始菜单不再响应
音乐永存!这是唯一一座屹立不倒的图书馆
命令已完成!
C 语言中没有太多新内容:
如果从可执行文件启动,应用程序仍可运行,应用程序数据仍然完整
我重启了机器。启动和登录没有问题。如果单击程序的直接可执行文件,程序仍可运行。仍可访问互联网。很难评估永久性损害。开始仍未打开。