Rm
rm 選項在不存在的文件上失敗
GNU coreutils 8.12.197-032bb 中的
man
頁面將or選項描述為“忽略不存在的文件,從不提示”。如果沒有此選項,它將刪除任何現有文件,從不提示,如果任何指定文件不存在,則返回非零退出程式碼。如果任何指定的文件不存在,我想保留這些文件。最簡單的方法是什麼?rm``-f``--force
案例是安全的:如果我試圖刪除一個不存在的文件,可能是因為命令中存在無效的期望(或普通錯誤)。例如,可以通過多種方式避免名人
rm -rf /usr /lib/nvidia-current/xorg/xorg
/lib/nvidia-current/xorg/xorg
,其中一種是這樣的選擇(顯然,除非使用者出於某種不可思議的巧合有一個目錄),另一種是使用更多行情™。然而,報價並不總是足夠的。例如,考慮ssh host '/bin/rm some paths; /bin/bash foo.sh'
- 如果我忘記了分號或插入了幾乎任何其他符號,如冒號或逗號,它會嘗試刪除/bin/bash
and~/foo.sh
。
我使用這種東西:
mkdir DELETE && mv "some" "paths" DELETE && rm -rf DELETE
對於單個路徑:
mv /some/path DELETE && rm -rf DELETE
更好的是,
rm command
在單獨的命令行上鍵入:mv /some/path DELETE
Enter
rm -rf DELETE
Enter
. 這樣,rm
進入 shell 歷史的唯一命令是在一個名為 的文件上DELETE
,所以如果你刪除了一個文件的舊版本,你不會因為不小心按Up
錯了 then 的次數而冒著刪除新版本的風險Enter
。如果你想自動化一點:
mv_to_DELETE () { mkdir DELETE && mv -- "$@" DELETE/ } mv_to_DELETE "some" "paths" rm -rf DELETE