当管道char直接跟随Bash中的重定向时会发生什么?

时间:2013-01-06 09:49:02

标签: bash pipeline

我不小心在Bash中运行了以下脚本:

$ ls -l | > ../test.txt

我得到一个空的test.txt。

发生了什么事?

2 个答案:

答案 0 :(得分:3)

您运行了 null命令,即只有一个或多个重定向的简单命令。这会执行重定向,但没有别的。

>file

是一种将file截断为零字节的方法。 null命令忽略其stdin,这就是您没有看到ls输出的原因。 我相信POSIX保留了这个未定义的(实际上,zsh在你输入>file时读取stdin。有一个名为:(冒号)的显式空命令。如果您只需要它们的副作用,即重定向和变量赋值,那么空命令很有用,如

: ${FOO:="default value"}  # Assign to FOO unless it has a value already.

答案 1 :(得分:0)

> ../test.txt清空文件,尽管输入数据就是为什么你有0个大小的文件。