Canalizando una sesión interactiva a un archivo

He hecho un programa de consola de juguete interactivo que es básicamente un intérprete:

$ myprogram
> this is user input
this is program output

Quiero canalizar la sesión completa, tanto la entrada del usuario como la salida del programa, en un archivo de registro. Puedo hacer esto así

$ 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

Por lo tanto, la sesión anterior se mostrará al terminal como de costumbre, pero también se duplicará en el archivo de registro.

¿Hay una mejor manera de hacer esto? No me gusta la forma en que tengo que escribir el archivo de registro dos veces, ni la forma en que debo recordar borrarlo antes de ejecutar este comando.

Respuestas a la pregunta(4)

Su respuesta a la pregunta