Piping uma sessão interativa para um arquivo
Eu fiz um programa de console interativo de brinquedo que é basicamente um interpretador:
$ myprogram
> this is user input
this is program output
Eu quero canalizar a sessão completa, tanto a entrada do usuário e saída do programa, em um arquivo de log. Eu posso fazer isso assim:
$ 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
Portanto, a sessão acima será exibida no terminal como de costume, mas também será duplicada no arquivo de log.
Existe uma maneira melhor de fazer isso? Eu não gosto de como eu tenho que escrever o arquivo de log duas vezes, nem como eu tenho que lembrar de limpá-lo antes de executar este comando.