| .\" Copyright (c) 1980, 1990 Regents of the University of California. |
| .\" All rights reserved. |
| .\" |
| .\" Redistribution and use in source and binary forms, with or without |
| .\" modification, are permitted provided that the following conditions |
| .\" are met: |
| .\" 1. Redistributions of source code must retain the above copyright |
| .\" notice, this list of conditions and the following disclaimer. |
| .\" 2. Redistributions in binary form must reproduce the above copyright |
| .\" notice, this list of conditions and the following disclaimer in the |
| .\" documentation and/or other materials provided with the distribution. |
| .\" 3. All advertising materials mentioning features or use of this software |
| .\" must display the following acknowledgement: |
| .\" This product includes software developed by the University of |
| .\" California, Berkeley and its contributors. |
| .\" 4. Neither the name of the University nor the names of its contributors |
| .\" may be used to endorse or promote products derived from this software |
| .\" without specific prior written permission. |
| .\" |
| .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND |
| .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE |
| .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE |
| .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE |
| .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL |
| .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS |
| .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) |
| .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT |
| .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY |
| .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF |
| .\" SUCH DAMAGE. |
| .\" |
| .\" @(#)script.1 6.5 (Berkeley) 7/27/91 |
| .\" |
| .TH SCRIPT "1" "June 2014" "util-linux" "User Commands" |
| .SH NAME |
| script \- make typescript of terminal session |
| .SH SYNOPSIS |
| .B script |
| [options] |
| .RI [ file ] |
| .SH DESCRIPTION |
| .B script |
| makes a typescript of everything displayed on your terminal. It is useful for |
| students who need a hardcopy record of an interactive session as proof of an |
| assignment, as the typescript file can be printed out later with |
| .BR lpr (1). |
| .PP |
| If the argument |
| .I file |
| is given, |
| .B script |
| saves the dialogue in this |
| .IR file . |
| If no filename is given, the dialogue is saved in the file |
| .BR typescript . |
| .SH OPTIONS |
| Below, the \fIsize\fR argument may be followed by the multiplicative |
| suffixes KiB (=1024), MiB (=1024*1024), and so on for GiB, TiB, PiB, EiB, ZiB and YiB |
| (the "iB" is optional, e.g. "K" has the same meaning as "KiB"), or the suffixes |
| KB (=1000), MB (=1000*1000), and so on for GB, TB, PB, EB, ZB and YB. |
| .TP |
| \fB\-a\fR, \fB\-\-append\fR |
| Append the output to |
| .I file |
| or to |
| .BR typescript , |
| retaining the prior contents. |
| .TP |
| \fB\-c\fR, \fB\-\-command\fR \fIcommand\fR |
| Run the |
| .I command |
| rather than an interactive shell. This makes it easy for a script to capture |
| the output of a program that behaves differently when its stdout is not a |
| tty. |
| .TP |
| \fB\-e\fR, \fB\-\-return\fR |
| Return the exit code of the child process. Uses the same format as bash |
| termination on signal termination exit code is 128+n. The exit code of |
| the child process is always stored in type script file too. |
| .TP |
| \fB\-f\fR, \fB\-\-flush\fR |
| Flush output after each write. This is nice for telecooperation: one person |
| does `mkfifo foo; script -f foo', and another can supervise real-time what is |
| being done using `cat foo'. |
| .TP |
| \fB\-\-force\fR |
| Allow the default output destination, i.e. the typescript file, to be a hard |
| or symbolic link. The command will follow a symbolic link. |
| .TP |
| \fB\-o\fR, \fB\-\-output-limit\fR \fIsize\fR |
| Limit the size of the typescript and timing files to |
| .I size |
| and stop the child process after this size is exceeded. The calculated |
| file size does not include the start and done messages that the |
| .B script |
| command prepends and appends to the child process output. |
| Due to buffering, the resulting output file might be larger than the specified value. |
| .TP |
| \fB\-q\fR, \fB\-\-quiet\fR |
| Be quiet (do not write start and done messages to standard output). |
| .TP |
| \fB\-t\fR[\fIfile\fR], \fB\-\-timing\fR[=\fIfile\fR] |
| Output timing data to standard error, or to |
| .I file |
| when given. This data contains two fields, separated by a space. The first |
| field indicates how much time elapsed since the previous output. The second |
| field indicates how many characters were output this time. This information |
| can be used to replay typescripts with realistic typing and output delays. |
| .TP |
| \fB\-V\fR, \fB\-\-version\fR |
| Display version information and exit. |
| .TP |
| \fB\-h\fR, \fB\-\-help\fR |
| Display help text and exit. |
| .SH NOTES |
| The script ends when the forked shell exits (a |
| .I control-D |
| for the Bourne shell |
| .RB ( sh (1)), |
| and |
| .IR exit , |
| .I logout |
| or |
| .I control-d |
| (if |
| .I ignoreeof |
| is not set) for the |
| C-shell, |
| .BR csh (1)). |
| .PP |
| Certain interactive commands, such as |
| .BR vi (1), |
| create garbage in the typescript file. |
| .B script |
| works best with commands that do not manipulate the screen, the results are |
| meant to emulate a hardcopy terminal. |
| .PP |
| It is not recommended to run |
| .B script |
| in non-interactive shells. The inner shell of |
| .B script |
| is always interactive, and this could lead to unexpected results. If you use |
| .B script |
| in the shell initialization file, you have to avoid entering an infinite |
| loop. You can use for example the \fB\%.profile\fR file, which is read |
| by login shells only: |
| .RS |
| .RE |
| .sp |
| .na |
| .RS |
| .nf |
| if test -t 0 ; then |
| script |
| exit |
| fi |
| .fi |
| .RE |
| .ad |
| .PP |
| You should also avoid use of script in command pipes, as |
| .B script |
| can read more input than you would expect. |
| .PP |
| .SH ENVIRONMENT |
| The following environment variable is utilized by |
| .BR script : |
| .TP |
| .B SHELL |
| If the variable |
| .B SHELL |
| exists, the shell forked by |
| .B script |
| will be that shell. If |
| .B SHELL |
| is not set, the Bourne shell is assumed. (Most shells set this variable |
| automatically). |
| .SH SEE ALSO |
| .BR csh (1) |
| (for the |
| .I history |
| mechanism), |
| .BR scriptreplay (1) |
| .SH HISTORY |
| The |
| .B script |
| command appeared in 3.0BSD. |
| .SH BUGS |
| .B script |
| places |
| .I everything |
| in the log file, including linefeeds and backspaces. This is not what the |
| naive user expects. |
| .PP |
| .B script |
| is primarily designed for interactive terminal sessions. When stdin |
| is not a terminal (for example: \fBecho foo | script\fR), then the session |
| can hang, because the interactive shell within the script session misses EOF and |
| .B script |
| has no clue when to close the session. See the \fBNOTES\fR section for more information. |
| .SH AVAILABILITY |
| The script command is part of the util-linux package and is available from |
| .UR https://\:www.kernel.org\:/pub\:/linux\:/utils\:/util-linux/ |
| Linux Kernel Archive |
| .UE . |