这样的重定向“ |>”只是一个错误还是意味着什么?


9

我打错了它,但是bash没有打印任何错误(但是创建了一个空文件),所以我想也许它实际上意味着什么?(例如,日期|> tmp.txt)


1
您确定命令的格式不正确date |> tmp.txt cmd2吗?因为那改变了答案。
康拉德·鲁道夫'18

Answers:


17

这似乎只是一个管道,其中第二部分是一个空命令,仅包含重定向。编写它date | >file可能会使解释更容易。empty命令除了处理重定向并创建文件外不执行任何操作。

date >| file另一方面,它将用作noclobbershell选项的替代,这可以防止常规>文件覆盖现有文件。

$ touch foo; set -o noclobber
$ date > foo
bash: foo: cannot overwrite existing file
$ date >| foo       # works

1

是的,它不会引发错误,因为bash > file意味着重定向到名为的文件file。就像您的情况一样,没有任何东西可以重定向到文件,bash只会创建一个file没有任何文件名的文件名。

[bd@centos-6.5 my-tests]$ date | > my_file
[bd@centos-6.5 my-tests]$ cat my_file
[bd@centos-6.5 my-tests]$ 

滑稽。Zsh具有不同的行为:在命令之后,my_file包含的输出date
NI

12
@NajibIdrissi中的@NajibIdrissi,zsh当只有重定向而没有命令时,如果只有输入重定向,则zsh运行$NULLCMD命令(cat默认情况下)或$READNULLCMD(默认情况下为寻呼机)。
斯特凡Chazelas
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.