使用命名管道提供终端输出时如何保存终端输出

使用命名管道提供终端输出时如何保存终端输出

我们知道可以使用以下语法在 Linux 终端中保存程序的结果:

terminal.out > result.txt

或者

terminal.out | tee result.txt

但是当我使用命名管道提供程序时,我无法保存程序的输出,如下所示:

terminal.out < pipe_in | tee result.txt

或者

terminal.out < pipe_in > result.txt

谁能告诉我正确的语法是什么?

答案1

您的terminal.out < pipe_in | tee result.txt语法是正确的;这是一个实际示例:

[gnubeard@mothership: ~]$ mkfifo foo
[gnubeard@mothership: ~]$ cat - < foo | tee bar

在另一个壳里——

echo "Hello, world!" > foo

然后我们在原来的终端看到输出:

[gnubeard@mothership: ~]$ cat - < foo | tee bar
Hello, world!

并保存输出./bar

[gnubeard@mothership: ~]$ cat bar
Hello, world!

这里,cat -是从 读取的stdin,通过stdout管道传输到tee,输出显示在终端上,并且也保存到./bar

您还可以使用cat将命名管道的输出发送到您的程序,例如cat pipe_in | terminal.out | tee result.txt

相关内容