2008-12-16 74 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來取消刪除文件。

相關問題