如何将stdout输出到进程和shell屏幕

有人知道一种方法发送一个命令的标准输出到另一个命令,并将其显示在shell屏幕中吗? 注意:不使用文件。

一个例子(在这种情况下,我使用wc -l来简化)

~> echo "test" | wc -l 1 

但我需要有

 test 1 

我已经尝试了T恤的命令,期待它会这样做,但它返回相同的东西

 ~> echo "test" | tee | wc -l 1 

有任何想法吗? 谢谢

你真的很清楚你想如何格式化输出。 即使如果使用tee ,输出也会被redirect到wc -l 。 所以,你不会看到echo的输出。

我可以想一个解决方法发送echo输出和wc -l到terminal通过发送一个stdoutstderr使用:

 $ echo "test" | tee /dev/stderr | wc -l test 1 

这样你将通过stdoutstderr发送到你的terminal。

使用@DukeLion发布的命名pipe道的想法也不错。

你可以使用命名pipe道三通来做到这一点。

创build命名pipe道: mkfifo /tmp/testpipe

使用tee将输出复制到标准输出和pipe道: echo "test" | tee /tmp/testpipe echo "test" | tee /tmp/testpipe

此时您的命令将被挂起,因为没有任何东西连接到pipe道输出。 您需要运行在不同的shell cat /tmp/testpipe | wc -l cat /tmp/testpipe | wc -l

命名pipe道是一个文件,但它不会做磁盘IO或内存缓冲。