shell命令`rm -rf //`中的目录`//`到底是做什么的?

时间:2018-11-20 16:09:32

标签: macos shell vim zsh rm

在尝试从我的项目目录中删除名为\\的错误目录时,我意外地运行了此命令。我知道是很错误的。很快,我就开始点击允许的文件,这时我意识到自己的错误,所以我ctrl-c走了出来。我已经备份了所有重要项目,但是命令杀死了我的开发环境。在任何地方打开vim都会崩溃,并引发以下段错误:

Vim: Caught deadly signal SEGV

Error detected while processing function <SNR>130_PollServerReady[7]..<SNR>130_Pyeval:Vim: Finished.

line    4:
Exception MemoryError: MemoryError() in <module 'threading' from '/System/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.pyc'> ignored
[1]    6921 segmentation fault  vim ~/dotfiles/.vimrc

对于我自己和任何犯下类似错误的人,我的主要问题是:

双反斜杠//到底指向什么?首先要删除什么?在开始替换util,configs,$ PATH之类的东西时是否有逻辑上的第一位?

希望这对于SO来说足够明确和具体。

2 个答案:

答案 0 :(得分:2)

cd //将带您到根目录/

rm performs a depth-first search,遍历xfts_open调用的结果。 find也以这种方式遍历文件系统。

find /将列出存在的文件。然后,您可以使用对预期结构的了解来反转缺少的列表。

或者,您可以使用debugfs帮助您获取文件。

这假定这些命令将实际起作用。实际上,您的系统可能已关闭。删除/中的内容会损坏计算机。从备份还原可能是返回功能系统的最简单方法。您也可以尝试使用各种实用程序从硬盘驱动器中恢复最近删除的文件。如果您打算这样做,则应该停止使用计算机,因为硬盘驱动器当前将许多区域视为可用空间(因为您告诉过),这些区域最近将文件保存在/中,并且可能会开始写入这些区域

答案 1 :(得分:0)

在Linux中,我相信其他* nix风格也很容易忽略路径中的额外斜杠。因此,a//ba/b相同,///相同。希望您不要以超级用户身份运行它。