Pipe

如何使用 tee 或其他類型的管道或輸出重定向進行標準輸入?

  • September 24, 2017

假設我想查看命令的輸出,例如apt-get. 但是,如果我要執行重定向輸出的命令,例如

apt-get install some-application -y > apt_out.txt

或者

apt-get install some-application -y | tee apt_out.txt

那麼我將失去與程序輸入互動的能力。然而我的解決方法是使用screen -L會話,但是會有更清潔的東西嗎?

讓我們從功能集和行為的角度來看待這一點,而不是一些未指定的清潔度概念。

一種不如 的通用機制screen -L,但它仍然可以滿足您的目的screen,而tee不是(即允許輕鬆互動使用,並且當程序發現標準輸出不是終端時,不會使程序陷入其非互動或緩衝輸出模式),是script命令。

腳本 -c "apt-get install some-application" apt_out.txt

script與is不同ptybandage的機制適用於命令管道,並且不需要它自己的外部標準 I/O 實際上是終端。(實際上,它的主要案例是使非互動式標準 I/O 看起來像子程序的互動式標準 I/O。)這是一種說服程序在其互動/行緩沖模式下執行同時仍然使用的方法管道通過tee方法。

ptybandage apt-get install some-application 2>&1 | tee apt_out.txt

進一步閱讀

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