Zsh重定向2>&燃气轮机|

Zsh重定向2>&燃气轮机|,zsh,options,io-redirection,Zsh,Options,Io Redirection,为了调试zsh行编辑器小部件,我复制了它,我意识到我不知道2>>实际上做了什么。大概是将stderr输入到一个文件中,但是|?啊,谷歌给了我答案 从zsh重定向文档中 >>|话 >>!!话 与>>相同,只是如果文件不存在,即使CLOBBER未设置,也会创建该文件 这基本上就是将stderr馈送到文件,并创建它。所以我今天还学习了CLOBBER,这实际上是标准的一种更“正常”的形式。也就是说,>可能由于未设置CLOBBER而出错 >|是zsh选择偏离POSIX标准的另一个例子: 注意2>中的2是这

为了调试zsh行编辑器小部件,我复制了它,我意识到我不知道
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:)我很感激你的赞美。