10

基本的にインタプリタであるおもちゃの対話型コンソール プログラムを作成しました。

$ myprogram
> this is user input
this is program output

ユーザー入力とプログラム出力の両方の完全なセッションをログ ファイルにパイプしたいと考えています。私はこれを次のように行うことができます:

$ cat | tee >(myprogram | tee -a file.log) >> file.log
> this is user input
this is program output
$ cat file.log
> this is user input
this is program output

したがって、上記のセッションは通常どおり端末に表示されますが、ログ ファイルにも複製されます。

これを行うより良い方法はありますか?ログ ファイルを 2 回書き込まなければならないことや、このコマンドを実行する前に忘れずに消去しなければならないことが気に入りません。

4

4 に答える 4

5

より単純な形式は

tee >(myprogram) | tee -a file.log

入力が再び画面に表示されるのを防ぎたい場合:

tee -a file.log | myprogram | tee -a file.log
于 2013-09-15T13:03:12.160 に答える
2

簡単な方法は、scriptコマンドを使用することです。端末セッション全体を保存するだけです。次のように実行します。

script my-interactive-session.log program
于 2013-11-10T23:29:32.273 に答える