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

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

我输入|>错误,但bash没有打印任何错误。 (但它确实创建了一个空文件。)例如,

date |> tmp.txt

我想也许这实际上意味着什么?

答案1

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

date >| file另一方面将作为noclobbershell 选项的覆盖,防止常规>覆盖现有文件。

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

答案2

是的,它不会抛出错误,因为对于 bash 来说> file意味着重定向到名为file.正如您的情况一样,没有任何内容可以重定向到文件,bash 只会创建一个file其中没有任何内容的文件名。

[[email protected] my-tests]$ date | > my_file
[[email protected] my-tests]$ cat my_file
[[email protected] my-tests]$ 

相关内容