zsh:禁用“文件存在:”重定向警告

kqw*_*kqw 33 zsh io-redirection

如何覆盖file exists:来自 zsh的警告?

> echo > newfile.txt
> echo > newfile.txt  
zsh: file exists: newfile.txt  
Run Code Online (Sandbox Code Playgroud)

在这些情况下,我希望我的 shell 不会抱怨,而是简单地覆盖文件,例如 bash。

同样,如何覆盖以下内容:

$ ls >> /tmp/testfile.txt                                                                                                                                                   
zsh: no such file or directory: /tmp/testfile.txt
Run Code Online (Sandbox Code Playgroud)

cmc*_*nty 56

您可以强制 ZSH在重定向时使用:

>!
Run Code Online (Sandbox Code Playgroud)

与 > 相同,除了文件存在时会被截断为零长度,即使未设置 CLOBBER。

或者

>>!
Run Code Online (Sandbox Code Playgroud)

与 >> 相同,但如果文件不存在,则创建该文件,即使未设置 CLOBBER。


Jos*_*din 30

你的setopt输出提到了noclobber吗?如果是这样,就是这样,只是setopt clobber

该选项的文档位于http://zsh.sourceforge.net/Doc/Release/Options.html#index-file-clobbering_002c-allowing


小智 24

其他人建议使用>!or>>!但这些不是 POSIX 标准。在没有提示的情况下覆盖文件的 POSIx 兼容方法是使用>|or>>|这将在任何shell 中工作。

有关信息,请参见此处:http : //pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_02