我在这里看到了一些问题,人们不小心做了rm -rf --no-preserve-root或rm -rf *,在他们做出反应之前擦除了大部分或全部文件系统。
是否有理由使用--no-preserve-root,无论是在正常使用中,作为开发人员还是作为管理员?
ter*_*don 35
重要提示:现代 UEFI 系统将固件安装在/sys目录下并使其可用于操作系统。不要在现代系统上运行这个命令,因为它会删除这个固件,本质上是让你的机器变砖。
我能想到的最简单的情况是有人想要从他们的驱动器中删除所有数据。这样做可能有完全合理的理由,我能想到的最简单的方法是
rm -rf --no-preserve-root /
Run Code Online (Sandbox Code Playgroud)
事实证明,这实际上是在以下示例中给出的info rm:
`--no-preserve-root'
Do not treat `/' specially when removing recursively. This option
is not recommended unless you really want to remove all the files
on your computer.
Run Code Online (Sandbox Code Playgroud)
另一个很好的理由是您想删除已安装的已安装文件系统chroot。在这种情况下,rm -rf --no-preserve-root /将删除chroot环境中的系统,但会保留您的完整系统。
我确信有更多可能的原因,但总的来说,我的系统允许我用它做任何我想做的事情似乎是一种非常合理的方法。小心是我的工作,系统应该只让我做我想做的事。如果我想要的是愚蠢的,那是我的问题而不是操作系统的问题。
无论如何,这是一个相对较新的限制,它是在POSIX 规范的第 7 版(前一个在这里)中添加的,在此之前rm -rf /是一个完全有效的命令。根据历史记录,自 1979 年第一次获得删除目录的能力以来,.和..目录一直受到保护。更多关于这里。rmrm
dur*_*tte 19
--no-preserve-root开关的存在不是为了添加额外的功能,而是为了覆盖功能的非常合理的减少。这种切换很可能基于这样一种哲学,即计算机应该按照它的指示去做,并且应该可以使用命令来表达任何所需的操作。这个开关早于 UEFI,根据我的经验,我说它现在已经过时了。
在现代实践中,如果没有此开关,该rm命令可避免在使用未初始化的变量或杂散空间时意外删除根目录。
rm -rf /${my_directory}
rm -rf / var/log/httpd/*
Run Code Online (Sandbox Code Playgroud)
有趣的脚注:保护不是它的意图。根据 Sun Microsystems 博客,删除/目录将隐式删除当前工作目录,这违反了已经对.和..目录进行的特殊考虑。这就是为什么他们的标准委员会允许这种特殊的例外——而不是为了防止事故。此更改首先在 Solaris 10 build 36 中引入。
| 归档时间: |
|
| 查看次数: |
58966 次 |
| 最近记录: |