画面に印刷するだけでなく、実行したコマンドのすべての出力をファイルにリダイレクトしたいと思います。
tee
私はこれが自動的に起こりたいので、毎回それを行う必要はありません。
私はそれを試しましたが、うまくexec | tee file
いきませんでした。どうすればいいですか?
これは Bash なので、それもPROMPT_COMMAND
使えます。
答え1
次のことができます。
exec > >(tee logfile) 2>&1
これは、シェルの出力とエラーストリームをプロセス置換にリダイレクトして>(tee logfile)
保存し、logfile
同時に端末にも出力します。
ユーザーmosvyが正しく指摘したように、以下のコメント、すべてのプログラム出力は、まるでファイルにリダイレクトされるかのように生成されます。ユーティリティがファイルに出力するものと端末装置に出力するものが異なる場合、出力は期待したものとは異なります。端末を必要とする一部のプログラムはまったく実行されない場合があります。
script
ファイルに書き込む対話型シェルを独自に実行するこのユーティリティを使用することもできます。マニュアルを参照してくださいscript
。