我输入|>
错误,但bash
没有打印任何错误。 (但它确实创建了一个空文件。)例如,
date |> tmp.txt
我想也许这实际上意味着什么?
答案1
这似乎只是一个管道,其中第二部分是一个空命令,仅包含重定向。写成这样date | >file
可能更容易解释。空命令除了处理重定向、创建文件之外不执行任何操作。
date >| file
另一方面将作为noclobber
shell 选项的覆盖,防止常规>
覆盖现有文件。
$ 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]$