Zsh重定向2>&燃气轮机|
为了调试zsh行编辑器小部件,我复制了它,我意识到我不知道Zsh重定向2>&燃气轮机|,zsh,options,io-redirection,Zsh,Options,Io Redirection,为了调试zsh行编辑器小部件,我复制了它,我意识到我不知道2>>实际上做了什么。大概是将stderr输入到一个文件中,但是|?啊,谷歌给了我答案 从zsh重定向文档中 >>|话 >>!!话 与>>相同,只是如果文件不存在,即使CLOBBER未设置,也会创建该文件 这基本上就是将stderr馈送到文件,并创建它。所以我今天还学习了CLOBBER,这实际上是标准的一种更“正常”的形式。也就是说,>可能由于未设置CLOBBER而出错 >|是zsh选择偏离POSIX标准的另一个例子: 注意2>中的2是这
2>>
实际上做了什么。大概是将stderr输入到一个文件中,但是|?啊,谷歌给了我答案
从zsh重定向文档中
>>|话
>>!!话
与>>相同,只是如果文件不存在,即使CLOBBER未设置,也会创建该文件
这基本上就是将stderr馈送到文件,并创建它。所以我今天还学习了CLOBBER,这实际上是标准的一种更“正常”的形式。也就是说,>
可能由于未设置CLOBBER而出错 >|
是zsh
选择偏离POSIX标准的另一个例子:
注意2>
中的2
是这里讨论的构造附带的;它们要么使用默认输出流stdout,其文件描述符为1
,要么使用任何显式指定的文件描述符,如本例中stderr的2
>
的工作原理有点类似于POSIX
结构,但仅在zsh
中受支持-其他主要的POSIX兼容shell-bash
,dash
,ksh
,和zsh不支持它
是的意思,它意味着即使在noclobber
shell选项生效时,也要强制替换现有文件,其目的就是在仅使用
时防止这种替换(“碰撞”)
请注意,在上述所有shell中,noclobber
默认为关闭
POSIX没有提到类似的
构造,而且bash
,dash
,ksh
确实不支持它
其基本原理是:由于>
不替换现有文件,而是附加到现有文件,因此其操作不受noclobber
是否生效的影响。
在这些shell中,始终允许使用
——无论输出文件是否已存在,是否设置了noclobber
(并且,如上所述,>|
根本不受支持)
zsh
请求区别对待,而>
受noclobber
是否生效的影响:
在
/|
逻辑的(可以说是逻辑上的)反转中,在noclobber
生效的情况下,>
仅在目标文件(已经)存在的情况下才起作用
因此,zsh
支持>|
(或>!
)强制按需创建目标文件,即使noclobber
有效
有几种方法可以设置/取消设置zsh
中的noclobber
选项:
- 兼容POSIX的方式:
zsh-C-C'…'
-启动zsh时,通过命令行选项-C
打开
set-C
-使用内置的set打开
设置-o noclobber
-按名称打开
如上所述,noclobber
在默认情况下是关闭的,但您只需将-C
替换为+C
,或将set-o
替换为set+o
,即可显式关闭它
zsh
-具体方式:
setopt noclobber
-相当于set-o noclobber
选项[noclobber]=on
-同上
setopt clobber
-相当于set+o noclobber
选项[clobber]=打开
-同上
可能setopt
或something@StevenLu是的,setopt noclobber
和setopt clobber
起作用,但还有其他方法;看到我的答案了吧。所以,好像我做更多的账户来投票真的很棒的答案是违反规则的,对吗?@StevenLu:)我很感激你的赞美。