たとえば、コマンドの出力を見たいとします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
、しかしそれにもかかわらずあなたの目的のために、このコマンドは何もしませんscreen
(tee
つまり、簡単なインタラクティブな使用を可能にし、標準出力が端末でないことを発見したときにプログラムを非対話型またはバッファ出力モードに切り替えません)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 |
追加読書
- ファイルからstdout / stderrをキャプチャしますが、コンソールで表示を続ける方法は何ですか?
- 出力が端末に行くと思うようにコマンドをだます方法
- スクリプト出力から制御文字(コンソールコード/色付き)を削除する
- script(1)の出力に改行CR+LF(dosスタイル)があるのはなぜですか?
- ログファイルからBSとESCを削除する
- ジョナサンデボインポラード(2016)。Daniel J. Bernsteinのptygetツールセット。ソフトウェア。
- ジョナサンデボインポラード(2016)。 ソフトウェア統合(Daniel J. Bernstein)。ソフトウェア。
答え2
screen -L
私にとっては良い解決策のように聞こえます。別のオプションはscript
(一部の人々が混乱している制御文字と誤った入力も記録します)です。
多くのプログラムは、入力と出力が端末に接続されているかどうかをテストし、それに応じて動作が失敗または変更されます。ls
対。ls | cat
の小さな例を参照してください。