我们知道可以使用以下语法在 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
。