Bash

如何將標準輸出輸出到程序和外殼螢幕

  • June 7, 2012

有人知道將命令的標準輸出發送到另一個命令並將其顯示在外殼螢幕中的方法嗎?注意:不使用文件。

一個例子(在這種情況下,我使用 wc -l 使其變得簡單)

~> echo "test" | wc -l
1

但我需要

test
1

我已經嘗試過 tee 命令,期望它會這樣做,但它返回相同的東西

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

有任何想法嗎?謝謝

非常清楚您希望如何格式化輸出。甚至,如果您使用tee輸出將被重定向到wc -l. 因此,您將看不到echo.

我可以想到一種解決方法,通過將輸出發送到終端並使用以下方式發送echo輸出和終端:wc -l``stdout``stderr

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

這樣,您將通過stdout和發送到您的終端stderr

使用@DukeLion 發布的命名管道的想法也是一個不錯的想法。

您可以將命名管道與 tee 一起使用來解決問題。

創建命名管道: mkfifo /tmp/testpipe

使用 tee 將輸出複製到標準輸出和管道:echo "test" | tee /tmp/testpipe

您的命令此時將掛起,因為沒有任何東西連接到管道輸出。你需要在不同的shell中執行cat /tmp/testpipe | wc -l

命名管道是一個文件,但它既不會做磁碟 io 也不會做記憶體緩衝。

引用自:https://serverfault.com/questions/396388