Bash

使用重定向替換文件時要求確認

  • August 17, 2012

我是一個粗心的終端驅動程序,害怕意外刪除文件,因此使用了一些別名,例如alias rm='rm -i'for rm, mv, cp. 我怎樣才能獲得類似的文件重定向確認行為(例如echo "I'm silly" > very_important_file.txt)。

常見的情況是我通常使用替換(>)而不是附加(>>),所以我最終不小心刪除了一些中間重要的文件。你有什麼建議?

我認為沒有辦法獲得 的確切行為-i,但我已經noclobber設置了它可以防止覆蓋已經存在的文件。

有關使用範例,請參閱此頁面。

您可以嘗試這樣的命令(如果您喜歡,請將其包含在您的啟動文件中)

$ set -o noclobber

例子:

$ ls > ls.out
$ set -o noclobber
$ ls > ls.out
bash: ls.out: cannot overwrite existing file
$

更新

正如@jsbillings 在下面的有用評論中提到的那樣,noclobber可以bash使用>|

由於我主要使用tcsh(一種csh變體),因此覆蓋運算符是>!

引用自:https://unix.stackexchange.com/questions/45732