Pipe
如何將命令的“stdin”和“stdout”重定向到輸出
假設我有 Python 腳本:
#!/usr/bin/env python input('Y/n: ') print('Next line')
按 後
Y
,我想要終端和我output.txt
的容器:Y/n: Y Next line
執行以下我沒有得到
Y
輸出:$ python ask.py 2>&1 | tee output.txt
如何在輸出中包含我的響應?
沿著你已經擁有的東西(用 測試
python3
):tee -a output.txt | python ask.py 2>&1 | tee -a output.txt
不利的一面是,您需要在 python 腳本終止後顯式鍵入一些內容,以首次
tee
嘗試寫入管道,接收 aSIGPIPE
並退出。您可以通過以下方式克服此限制:tee -a output.txt | { python ask.py 2>&1; kill 0; } | tee -a output.txt
where
kill
用於殺死目前程序組(即管道執行的專用程序組)中的所有程序。(但請注意,警告可能適用)。如果您可以使用,另一種選擇
script
可能是:script -q -c 'python ask.py' output.txt
在這種情況下
python
,將連接到一個偽終端設備,確保它的行為就像在終端上互動式執行一樣。