`命令| 和有什么区别? cat > output.txt` 和 `command | > 输出.txt`

`命令| 和有什么区别? cat > output.txt` 和 `command | > 输出.txt`

为什么我们不能在使用 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..

我还可以使用替代工具来代替命令catcat这里重要的不是工具。我想问的是为什么我们不能使用路由运算符“ >”来路由直接来自管道的数据?

答案1

从概念上讲,管道的工作方式是将左侧命令的输出连接到右侧命令的输入。

所以这一行:

whoami | cat > out.txt

whoami默认情况下将打印到stdout,但由于有一个管道,它将连接到 的输入cat

那么这是什么意思?

whoami | > out.txt

好吧,你是说将 的输出附加whoami到任何东西上。然后将任何内容的输出重定向到文件out.txt

>运算符意味着截断名为右侧参数的文件,如有必要则创建它,然后将左侧命令的输出重定向到该文件。注意

> out.txt

将创建一个空文件。

相关内容