Shell

從標準輸入重定向程序讀取的輸出

  • May 27, 2012

當我想重定向a.out程序的輸出時,我將使用

./a.out > output.txt

當程序從stdin讀取某些內容時,這不起作用。在這種情況下,您將如何重定向輸出?

我只能用

./a.out < inputs.txt > output.txt

我可以做同樣的事情,但從stdin讀取輸入嗎?

編輯:我意識到它有效,但我看不到提示,因為所有內容都轉到文件output.txt因此,唯一的問題是在標準輸入上查看提示並同時保留重定向。

一種選擇是將提示寫入stderr而不是stdout. 它們將在終端上可見,但在output.txt.

另一種選擇是不對輸出使用重定向,而是將輸出文件名作為參數並自己打開該文件。然後,您可以使用stdout提示。(這更靈活。您可以決定哪些內容僅用於文件,哪些內容僅用於螢幕,以及哪些內容可能同時用於兩者。)

如果您無法更改程式碼,則唯一的選擇是使用tee或其他一些此類實用程序。緩衝可能是個問題;stdbuf可能會有所幫助。

引用自:https://unix.stackexchange.com/questions/39445