2008-12-16 48 views
4

我很害怕,有一天,我要加一个空格或错过在我目前使用的命令的东西:在* nix中清空目录的最安全方法是什么?

rm -rf ./* 

有清空当前目录中的内容更安全的方式?

+0

好的Unix发行版不会保护你自己,而且优质黑客更喜欢这种方式。 – paxos1977 2008-12-18 01:03:02

+0

我希望这样的评论可以低估。 防止错误是很好的,只要它不会造成破坏生产力的愚蠢开销。 例如我总是使用root,因为我讨厌在我输入的每个命令之前都必须输入“stubid sudo”......但是OTOH,我会默认我的mv&rm总是默认确认。 好的unix发行版让你按照自己喜欢的方式做事。对愚蠢的错别字的基本保护是很好的,只要它不沉默,并且当你错误地要求清空你的/目录时产生明确的错误信息。 – Balmipour 2016-11-25 15:18:20

+0

为了回答这个问题,我个人习惯于先输入“rm ”,然后再读一遍,仔细检查,并在行尾添加最后的“-rf”。 它可能看起来很愚蠢,或者很慢,但我一天不会使用它几十次,无论条件如何,我总是会害怕在打字时不小心敲入。这是我之前不输入-r参数的主要原因。 – Balmipour 2016-11-25 15:21:55

回答

7

最安全的方法是,按Enter坐在你的手。

这且不说,你可以创建这样一个(击)的别名

 
alias rm="pwd;read;rm" 

会告诉你你的目录,等待进入按,然后你用正确的标志指定的内容删除。您可以按^ C而不是Enter来取消。

0

您可以随时打开-i这会在每个文件中提示您,但这对于大型目录来说非常耗时。

我总是先做pwd

我甚至会尽可能创建一个别名,以便强制提示我的用户。我想,Red Hat会默认这样做。

0

你可以放下`f'开关,它应该提示你为每个文件确保你真的想删除它。

3

转到一个级别和类型的目录名

rm -rf <dir>/* 
+0

如果您已经在/和做 cd .. rm -rf/* 您将拥有。 ;) – 2008-12-16 23:41:53

+0

我们正在打字还是正在从脚本发送命令? – Pyrolistical 2008-12-16 23:47:14

+0

始终使用您想要删除的目录名称!切勿以root身份工作。 – OscarRyz 2008-12-17 09:06:08

3

我使用的一个:

rm -fr . 

cd ..; rm -fr name-of-subdirectory 

我很少充分地附着到我想要摆脱的内容,但必须保持目录本身的目录。

4

如果你想成为真正的安全,你可以创建一个简单的别名或shell脚本,如:

MV $为1〜/ .recycle/

这只是把东西搬进来一个.recycle文件夹(你好,Windows!)。

然后设置一个cron作业,对该文件夹中超过一周的内容执行rm -rf。

2

使用rm -rf时,我几乎总是使用完全限定路径。

6

这里是一个更安全的方式:用ls首先列出将受影响的文件,然后使用命令行历史或历史替换改变lsrm并再次执行该命令你确信正确的文件会后被操作。

5

我认为这是一个合理的方法:

find . -maxdepth 1 \! -name . -print0 | xargs -0 rm -rf 

,它也将采取的隐藏文件和目录服务。在点之后不需要斜线,并且这也将消除键入. /的可能的事故。

现在,如果你担心它会删除,只是将它变成

find . -maxdepth 1 \! -name . -print | less 

,并期待在列表中。现在,你可以把它变成一个功能:

function enum_files { find . -maxdepth 1 \! -name . "[email protected]"; } 

现在你删除是安全的:如果你不是在具有文件名嵌入新行的习惯

enum_files | less      # view the files 
enum_files -print0 | xargs -0 rm -rf # remove the files 

,可以省略-print0-0参数。但我会使用它们,以防万一:)

0

如果你想要做的是吹走整个目录,那么总是存在某种程度的与该操作相关的危险。如果你确实希望确保你做的是正确的事情,那么你总是可以对/ tmp这样的地方进行移动操作,请等待一段时间,以确保在“删除”的位置上一切正常。然后进入/ tmp目录并仅使用相对路径进行强制和递归移除操作。另外,在移动过程中,重命名为“delete-directoryname”,使其更容易不出错。

比如我想删除的/ opt /文件夹,所以我做的:

MV的/ opt /文件夹/ TMP /删除文件夹

....等,以确保一切正常 - 也许一分钟,也许一个星期....

CD/tmp目录

PWD

室射频删除文件夹/

执行rm -rf最重要的技巧是始终使用相对路径。这可以防止你在输入完成之前键入a /。

0

有一个原因,我有[tcsh中]:

alias clean '\rm -i -- "#"* *~' 
alias rmo 'rm -- *.o' 

他们创建的第一次,我不小心把*和的.o之间的空间。我只想说,发生的事情并不是我预期会发生的事情......

但事情本来可能更糟。早在90年代初,我的一位朋友有一个〜/ etc目录。他想删除它。不幸的是,他输入了rm -rf/etc。不幸的是,他以root身份登录。他有一个糟糕的一天!


是邪恶的:触摸 - '-rf *'

为了安全起见,使用' - '-i。或者一次搞定并创建一个别名!

1

使用trash命令。在Debian/Ubuntu /等中,它可以从包trash-cli安装。它对文件和目录都有效(因为它确实在移动文件,而不是立即删除它)。

trash实现了freedesktop.org trash specification,与GNOME和KDE垃圾兼容。

可以使用同一包中的restore-trash或通过通常的GUI来取消删除文件。

相关问题