为什么我们不能在使用 Pipe 路由后将这些输出定向到文件中?
你可以更好地理解我通过这个例子的意思。在我的示例中,为什么我不能仅使用路由运算符(“ >
”)而不使用该cat
命令来路由输出?
使用cat
命令:
└─$ whoami | cat > out.txt
└─$ cat out.txt
testter
没有cat
命令:
└─$ whoami | > out1.txt
└─$ cat out1.txt
#no any content in file..
└─$ whoami | >> out2.txt
└─$ cat out2.txt
#no any content in file..
我还可以使用替代工具来代替命令cat
。cat
这里重要的不是工具。我想问的是为什么我们不能使用路由运算符“ >
”来路由直接来自管道的数据?
答案1
从概念上讲,管道的工作方式是将左侧命令的输出连接到右侧命令的输入。
所以这一行:
whoami | cat > out.txt
whoami
默认情况下将打印到stdout
,但由于有一个管道,它将连接到 的输入cat
。
那么这是什么意思?
whoami | > out.txt
好吧,你是说将 的输出附加whoami
到任何东西上。然后将任何内容的输出重定向到文件out.txt
该>
运算符意味着截断名为右侧参数的文件,如有必要则创建它,然后将左侧命令的输出重定向到该文件。注意
> out.txt
将创建一个空文件。