如何覆盖file exists:
zsh 的警告?
> echo > newfile.txt
> echo > newfile.txt
zsh: file exists: newfile.txt
在这些情况下,我更喜欢我的 shell 不抱怨并简单地覆盖文件,就像 bash 一样。
同样,如何覆盖以下内容:
$ ls >> /tmp/testfile.txt
zsh: no such file or directory: /tmp/testfile.txt
答案1
您可以强制 ZSH重定向上的破坏者和:
>!
与 > 相同,但如果文件存在,即使未设置 CLOBBER,该文件也会被截断为零长度。
或者
>>!
与 >> 相同,但如果文件不存在,即使未设置 CLOBBER,也会创建该文件。
答案2
你的setopt
输出提到了吗noclobber
?既然如此,那就这样吧setopt clobber
该选项的文档位于http://zsh.sourceforge.net/Doc/Release/Options.html#index-file-clobbering_002c-allowing
答案3
其他人建议使用>!
or>>!
但这些不是 POSIX 标准。在没有提示的情况下覆盖文件的 POSIx 兼容方法是使用>|
or >>|
,这将在任何壳。
有关信息请参见此处:http://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html#tag_18_07_02