Weiterleiten einer interaktiven Sitzung an eine Datei

Ich habe ein interaktives Konsolenprogramm für Spielzeug erstellt, das im Grunde genommen ein Interpreter ist:

$ myprogram
> this is user input
this is program output

Ich möchte die gesamte Sitzung, sowohl Benutzereingabe als auch Programmausgabe, in eine Protokolldatei umleiten. Ich kann das so machen:

$ 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

Die obige Sitzung wird also wie gewohnt auf dem Terminal angezeigt, aber auch in der Protokolldatei dupliziert.

Gibt es einen besseren Weg, dies zu tun? Mir gefällt weder, wie ich die Protokolldatei zweimal schreiben muss, noch wie ich daran denken muss, sie vor dem Ausführen dieses Befehls zu löschen.

Antworten auf die Frage(4)

Ihre Antwort auf die Frage