有人知道一种方法发送一个命令的标准输出到另一个命令,并将其显示在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通过发送一个stdout和stderr使用:
$ echo "test" | tee /dev/stderr | wc -l test 1
这样你将通过stdout和stderr发送到你的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或内存缓冲。