Script (Unix)
The script command is a Unix utility that records a terminal session. It dates back to the 1979 3.0 Berkeley Software Distribution (BSD).[1]
Usage
A script 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 recorded format of script consists of plain-text timing information (for the whole session) and verbatim command output, including whatever ANSI escape code the program has printed for formatting. It uses a pseudoterminal for this purpose, so programs act exactly as if they were on a terminal.[1] The util-linux scriptreplay command offers a replay function to its script, which supports using an extra timing file for character-level information.[2][3] Some online services, such as the now-defunct shelr.tv, can also show the format as a low-bandwidth alternative to video screencasts.[4]
Problems with script command
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 systems make this possible by use of pipes and redirects. Consider the following model examples:
Bourne shell
All shells related to Bourne shell (sh), for example Thompson shell (sh), Bash (bash), KornShell (ksh), and Z shell (zsh), allow the stdout and stderr to be attached to a named pipe and redirected to the tee command, for example:
LOGNAME="script"
rm -f $LOGNAME.p $LOGNAME.log
mknod $LOGNAME.p p
tee <$LOGNAME.p $LOGNAME.log &
exec >$LOGNAME.p 2>&1
The above script records to script.log all output of the exec command. However, some interactive programs (such as Python) do not echo their standard input when run under the resulting shell, although they do when run under the script command, again due to the detection of a terminal.
Alternatives to script command
The ttyrec program from 2000 provides the same kind of functionality and offers several bindings. The timing is similar to util-linux. A more modern take on the concept is "asciicast" JSON, used by asciinema.[5]
See also
References
- ^ a b – FreeBSD General Commands Manual
- ^ – Linux User Manual – User Commands
- ^ "LinuxInsight - Replaying terminal sessions with scriptreplay". Archived from the original on 2016-04-21. Retrieved 2008-12-22.
- ^ OMG! Ubuntu! - How To Record And Share Terminal Screencasts Quickly
- ^ "About - asciinema".
Content Disclaimer
Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.
- The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
- There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
- It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
- Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
- Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.