我试图从主目录下我自己创建的临时文件夹中删除数据,但意外地删除了主目录下的默认“tmp”目录~/tmp
。令我震惊的是,它几乎抹去了所有内容!“垃圾箱”里什么都没有。我所有的文档、下载、图片、项目。都消失了!
我也没有时间机器备份。但我不明白删除该tmp
文件夹后到底发生了什么!我记得它曾经有一些npm-*
文件/文件夹。它怎么会有力量抹去一切?当然我用过,sudo
但我在 Linux 上工作时也用过无数次,从来没有发生过这种情况。我该如何恢复?
这是造成严重破坏的命令
sudo rm -rf * tmp/
答案1
您声明要删除以下内容:~/tmp
。但是您说您运行的命令是这样的:
sudo rm -rf * tmp/
很遗憾,当您运行此命令时所在目录的所有内容(很可能是您的主目录)都已被清除。
命令你应该已经运行的是这样的:
sudo rm -rf ~/tmp
运行第一个命令时,出现了以下错误:
- 您有一个通配符(
*
),其基本含义是“对该目录中的所有内容(包括子目录)进行操作”。 *
和之间有一个空格tmp/
,这没有意义。- 其工作方式
rm
是删除所提供的空格分隔列表中的所有项目。因此,当您sudo rm -rf
使用运行* tmp/
时,它基本上告诉系统“对该目录中的所有内容(包括子目录)进行操作,然后在完成后删除该tmp/
目录。”当然,-r
还会告诉rm
系统搜索您的子目录递归地。
所以当一切都说完了......是的......你通过“终端”告诉 Mac OS X 从你运行该命令的目录中删除所有文件和目录。
你还这么说:
“垃圾”中没有任何内容。我的所有文档、下载、图片、项目。全部消失了!
“废纸篓”在“终端”中不起作用,因为整个“废纸篓”概念是 Mac OS X“Finder”系统的安全网部分。当您在“Finder”中删除某些内容时,它会进入“废纸篓”,但如果您rm
从“终端”运行,则项目会被删除并消失。除非您有备份,否则这些东西会消失。抱歉。什么也做不了。
这就是为什么在命令行的世界里——以及对这样的文件的操作中——总是建议您使用以下命令执行“dry run”ls
(列出目录内容)如下:
ls -la * tmp/
由于ls
只列出文件和目录,通过首先运行 with ls -la
,您将获得参数将作用于的* tmp/
所有文件和目录的列表。并且 — 在某些替代方案中 — 如果您使用命令运行该命令,您会立即看到该命令可能执行的操作,并且知道,“嘿!这似乎不对……”然后跳回绘图板,看看如何责备您的清理工作。* tmp/
sudo rm -rf
答案2
如果您的工作目录是主目录,则您删除了主目录中的所有内容,因为您指定了*
,即当前目录中的所有内容。由于有一个空格,因此tmp/
被读取为另一个参数,但这没有效果,因为*
删除了所有内容。
现在您所能做的就是搜索硬盘恢复软件。