1.\" Copyright (c) 1980, 1990, 1993 2.\" The Regents of the University of California. All rights reserved. 3.\" 4.\" Redistribution and use in source and binary forms, with or without 5.\" modification, are permitted provided that the following conditions 6.\" are met: 7.\" 1. Redistributions of source code must retain the above copyright 8.\" notice, this list of conditions and the following disclaimer. 9.\" 2. Redistributions in binary form must reproduce the above copyright 10.\" notice, this list of conditions and the following disclaimer in the 11.\" documentation and/or other materials provided with the distribution. 12.\" 3. Neither the name of the University nor the names of its contributors 13.\" may be used to endorse or promote products derived from this software 14.\" without specific prior written permission. 15.\" 16.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND 17.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 18.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 19.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE 20.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL 21.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS 22.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) 23.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 24.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY 25.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF 26.\" SUCH DAMAGE. 27.\" 28.\" @(#)script.1 8.1 (Berkeley) 6/6/93 29.\" $FreeBSD: src/usr.bin/script/script.1,v 1.12.2.4 2002/06/21 15:29:06 charnier Exp $ 30.\" $DragonFly: src/usr.bin/script/script.1,v 1.2 2003/06/17 04:29:31 dillon Exp $ 31.\" 32.Dd June 6, 1993 33.Dt SCRIPT 1 34.Os 35.Sh NAME 36.Nm script 37.Nd make typescript of terminal session 38.Sh SYNOPSIS 39.Nm 40.Op Fl a 41.Op Fl k 42.Op Fl q 43.Op Fl t Ar time 44.Op Ar file Op command ... 45.Sh DESCRIPTION 46The 47.Nm 48utility makes a typescript of everything printed on your terminal. 49It is useful for students who need a hardcopy record of an interactive 50session as proof of an assignment, as the typescript file 51can be printed out later with 52.Xr lpr 1 . 53.Pp 54If the argument 55.Ar file 56is given, 57.Nm 58saves all dialogue in 59.Ar file . 60If no file name is given, the typescript is saved in the file 61.Pa typescript . 62.Pp 63If the argument 64.Ar command ... 65is given, 66.Nm 67will run the specified command with an optional argument vector 68instead of an interactive shell. 69.Pp 70Options: 71.Bl -tag -width xxxxxxx 72.It Fl a 73Append the output to 74.Ar file 75or 76.Pa typescript , 77retaining the prior contents. 78.It Fl k 79Log keys sent to program as well as output. 80.It Fl q 81Run in quiet mode, omit the start and stop status messages. 82.It Fl t Ar time 83Specify time interval between flushing script output file. A value of 0 84causes 85.Nm 86to flush for every character I/O event. The default interval is 8730 seconds. 88.El 89.Pp 90The script ends when the forked shell (or command) exits (a 91.Em control-D 92to exit 93the Bourne shell 94.Pf ( Xr sh 1 ) , 95and 96.Em exit , 97.Em logout 98or 99.Em control-d 100(if 101.Em ignoreeof 102is not set) for the 103C-shell, 104.Xr csh 1 ) . 105.Pp 106Certain interactive commands, such as 107.Xr vi 1 , 108create garbage in the typescript file. 109The 110.Nm 111utility works best with commands that do not manipulate the screen. 112The results are meant to emulate a hardcopy terminal, not an addressable one. 113.Sh ENVIRONMENT 114The following environment variable is utilized by 115.Nm : 116.Bl -tag -width SHELL 117.It Ev SHELL 118If the variable 119.Ev SHELL 120exists, the shell forked by 121.Nm 122will be that shell. 123If 124.Ev SHELL 125is not set, the Bourne shell 126is assumed. 127(Most shells set this variable automatically). 128.El 129.Sh SEE ALSO 130.Xr csh 1 131(for the 132.Em history 133mechanism). 134.Sh HISTORY 135The 136.Nm 137command appeared in 138.Bx 3.0 . 139.Sh BUGS 140The 141.Nm 142utility places 143.Sy everything 144in the log file, including linefeeds and backspaces. 145This is not what the naive user expects. 146.Pp 147It is not possible to specify a command without also naming the script file 148because of argument parsing compatibility issues. 149.Pp 150When running in 151.Fl k 152mode, echo cancelling is far from ideal. The slave terminal mode is checked 153for ECHO mode to check when to avoid manual echo logging. This does not 154work when in a raw mode where the program being run is doing manual echo. 155