non*_*one 5 bash io-redirection alias
我是一个粗心的终端驱动程序,害怕不小心删除文件,因此使用了一些别名,例如alias rm='rm -i'
for rm
, mv
, cp
。我怎样才能获得类似的文件重定向确认行为(例如echo "I'm silly" > very_important_file.txt
)。
常见的情况是我通常使用 replace ( >
) 而不是 append ( >>
),所以我最终不小心删除了一些中间重要的文件。你有什么建议?
我认为没有办法获得 的确切行为-i
,但我已经noclobber
设置了防止覆盖现有文件的方法。
有关使用示例,请参阅此页面。
您可以尝试这样的命令(如果您喜欢,请将其包含在您的启动文件中)
$ set -o noclobber
Run Code Online (Sandbox Code Playgroud)
例子:
$ ls > ls.out
$ set -o noclobber
$ ls > ls.out
bash: ls.out: cannot overwrite existing file
$
Run Code Online (Sandbox Code Playgroud)
更新:
作为@jsbillings下面有帮助的评论提到,要覆盖noclobber
在bash
一个可以使用>|
由于我主要使用tcsh
(csh
变体),因此覆盖运算符是>!