我不小心在Bash中运行了以下脚本:
$ ls -l | > ../test.txt
我得到一个空的test.txt。
发生了什么事?
答案 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个大小的文件。