2

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

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

我得到了一个空的 test.txt。

发生了什么?

4

2 回答 2

3

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

>file

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

: ${FOO:="default value"}  # Assign to FOO unless it has a value already.
于 2013-01-06T09:53:39.593 回答
0

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

于 2013-01-06T09:53:24.113 回答