"xterm -hold -e"コマンドの出力をリダイレクトする方法

"xterm -hold -e"コマンドの出力をリダイレクトする方法

teeこれを使用して端末からコマンド出力を記録できることを知っています。たとえば、次のようになります。

df -h | tee ~/log.txt

しかし、次のようなより複雑なコマンドを使用してこれを行うにはどうすればよいですか?

xterm -hold -e program arg1 arg2 arg3

私は成功せずにこれを試しました。

xterm -hold -e matlab -noxterm -nojvm -r "solver('/path/to/a/folder',1)" | tee ~/log.txt

xterm私の目標は、合計のすべての出力を記録することです。いいえ元の端末です。これ

答え1

xtermロギングを有効にして、すべてのxterm出力をファイルに送信できます。

xterm -l -lf logfile.txt -e program

答え2

出力をリダイレクトすると、端末で実行されるプログラムの動作が変わる可能性があります。キャプチャしたい場合みんなプログラムの出力は、次のようにプログラムを妨げないコンテンツを使用しますscript

xterm -hold -e script -c "program arguments" output.log

(Linux)または

xterm -hold -e script output.log program arguments

(OSX、その他BSD)

あるいは、リソースを使用するか、メニュー項目を使用してxterm「プリンタ」への画面書き込みを設定するように設定することもできます。printerCommand今すぐ印刷

追加資料:

答え3

実行したプログラムの出力をxtermに知りたい場合は、 xterm -hold -e " program arg1 arg2 arg3 | tee ~/log.txt"

たとえば、Ubuntuではgnome-terminal次のことを実行します。xterm -hold -e " firefox | tee ~/log.txt"

エラーを記録するオプションもあります

xterm -hold -e program 2> errors.txt通常、コンソールで発生したすべてのエラーをファイルにリダイレクトします。

しかし、私の考えにはこれは少し不要なようだ。ある端末から別の端末にプログラムを実行します。

関連情報