The script command is a Unix utility that records a terminal session. The scriptreplay command offers a replay function to script. The session is captured in file name typescript by default; to specify a different filename follow the script command with a space and the filename as such: script recorded_session.
The ttyrec program provides the same kind of functionality and offers several bindings.
Recorded shell sessions can be shared using online services. The advantage of sessions recorded in this format from the usual screencasts is that shell instructions can be easily copy/pasted from the player screen.
Script (Unix) Wikipedia
One of the problems with the script command is that it only allows logging of a child process; and often there is a need to log the command in the current process without spawning a new process, such as when automation of a script is needed that can log its own output. The unix operating system makes this possible by use of pipes and redirects. Consider the following model examples:
All shells related to Bourne shell (namely: sh, bash, and ksh) allow the stdout and stderr to be attached to a named pipe and redirected to the tee command.
The above script records to script.log all output of the "exec" command. However, some interactive programs (such as python) do not display their standard input when run under the resulting shell, although they do when run under the script command.