追加読書

追加読書

たとえば、コマンドの出力を見たいとしますapt-get。ただし、出力をリダイレクトするコマンドを実行すると、次のようになります。

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

または

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

これにより、プログラム入力と対話する能力が失われます。しかし、私の回避策はセッションを使用することですが、screen -Lよりきれいなものはありますか?

答え1

不特定の概念ではなく、機能セットと動作の点でこれを見てみましょう。清潔

あまり汎用性がありませんメカニズムはscreen -L、しかしそれにもかかわらずあなたの目的のために、このコマンドは何もしませんscreenteeつまり、簡単なインタラクティブな使用を可能にし、標準出力が端末でないことを発見したときにプログラムを非対話型またはバッファ出力モードに切り替えません)script

スクリプト -c "apt-get 一部のアプリケーションのインストール" apt_out.txt

script他のメカニズムptybandageはいコマンドパイプラインでの使用に適しています。確かにこれを必要とする外部標準I / Oは実際には端末です。 (実際の主なユースケースは、非対話型標準I / Oをサブルーチンの対話型標準I / Oのように見せることです。)これは、プログラムが対話型/ラインバッファモード実行でこれを実行するように説得する方法です。それでもストレートパイプラインtee方式を使用しています。

ptybandage apt-get install some-application 2>&1 | ptybandage apt-get install some-application 2>&1 | ptybandage apt-get install some-application 2>&1 |

追加読書

答え2

screen -L私にとっては良い解決策のように聞こえます。別のオプションはscript(一部の人々が混乱している制御文字と誤った入力も記録します)です。

多くのプログラムは、入力と出力が端末に接続されているかどうかをテストし、それに応じて動作が失敗または変更されます。ls対。ls | catの小さな例を参照してください。

関連情報