Piping an interactive session to a file Piping an interactive session to a file unix unix

Piping an interactive session to a file


script — make typescript of terminal session:

script -c "myprogram" file.log

The whole session will be logged to file.log


The simpler form could be

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

If you want to prevent input being shown again to the screen:

tee -a file.log | myprogram | tee -a file.log


As two processes can't read the same input two tees are needed, one which reads terminal input and writes to program standard input and file.log another which reads program standard output and writes into terminal output and file.log:

tee -a file.log | program | tee -a file.log