]> git.saurik.com Git - apple/shell_cmds.git/blame - script/script.1
shell_cmds-207.11.1.tar.gz
[apple/shell_cmds.git] / script / script.1
CommitLineData
44bd5ea7
A
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.
44bd5ea7
A
12.\" 4. 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
b5fe885e 29.\" $FreeBSD$
44bd5ea7 30.\"
b5fe885e 31.Dd December 4, 2013
44bd5ea7 32.Dt SCRIPT 1
e1a085ba 33.Os
44bd5ea7
A
34.Sh NAME
35.Nm script
36.Nd make typescript of terminal session
37.Sh SYNOPSIS
38.Nm
b5fe885e
A
39.Op Fl adkpqr
40.Op Fl F Ar pipe
e1a085ba
A
41.Op Fl t Ar time
42.Op Ar file Op Ar command ...
44bd5ea7 43.Sh DESCRIPTION
e1a085ba 44The
44bd5ea7 45.Nm
e1a085ba 46utility makes a typescript of everything printed on your terminal.
44bd5ea7 47It is useful for students who need a hardcopy record of an interactive
e1a085ba 48session as proof of an assignment, as the typescript file
44bd5ea7
A
49can be printed out later with
50.Xr lpr 1 .
51.Pp
52If the argument
53.Ar file
54is given,
55.Nm
56saves all dialogue in
57.Ar file .
58If no file name is given, the typescript is saved in the file
e1a085ba 59.Pa typescript .
44bd5ea7 60.Pp
e1a085ba
A
61If the argument
62.Ar command
63is given,
64.Nm
65will run the specified command with an optional argument vector
66instead of an interactive shell.
67.Pp
68The following options are available:
69.Bl -tag -width indent
44bd5ea7
A
70.It Fl a
71Append the output to
72.Ar file
73or
74.Pa typescript ,
75retaining the prior contents.
b5fe885e
A
76.It Fl d
77When playing back a session with the
78.Fl p
79flag, do not sleep between records when playing back a timestamped session.
80.It Fl F Ar pipe
81Immediately flush output after each write.
82This will allow a user to create a named pipe using
83.Xr mkfifo 1
84and another user may watch the live session using a utility like
85.Xr cat 1 .
86.\".It Fl f
87.\"Create
88.\".Ar file.filemon
89.\"or
90.\".Pa typescript.filemon
91.\"using
92.\".Xr filemon 4 .
e1a085ba 93.It Fl k
b5fe885e
A
94Log keys sent to the program as well as output.
95.It Fl p
96Play back a session recorded with the
97.Fl r
98flag in real time.
e1a085ba 99.It Fl q
b5fe885e
A
100Run in quiet mode, omit the start, stop and command status messages.
101.It Fl r
102Record a session with input, output, and timestamping.
e1a085ba 103.It Fl t Ar time
b5fe885e
A
104Specify the interval at which the script output file will be flushed
105to disk, in seconds.
e1a085ba
A
106A value of 0
107causes
108.Nm
b5fe885e 109to flush after every character I/O event.
e1a085ba
A
110The default interval is
11130 seconds.
44bd5ea7
A
112.El
113.Pp
e1a085ba 114The script ends when the forked shell (or command) exits (a
44bd5ea7
A
115.Em control-D
116to exit
117the Bourne shell
118.Pf ( Xr sh 1 ) ,
119and
e1a085ba 120.Em exit ,
44bd5ea7
A
121.Em logout
122or
e1a085ba 123.Em control-D
44bd5ea7
A
124(if
125.Em ignoreeof
126is not set) for the
127C-shell,
128.Xr csh 1 ) .
129.Pp
130Certain interactive commands, such as
131.Xr vi 1 ,
132create garbage in the typescript file.
e1a085ba 133The
44bd5ea7 134.Nm
e1a085ba
A
135utility works best with commands that do not manipulate the screen.
136The results are meant to emulate a hardcopy terminal, not an addressable one.
44bd5ea7 137.Sh ENVIRONMENT
b5fe885e 138The following environment variables are utilized by
e1a085ba 139.Nm :
44bd5ea7 140.Bl -tag -width SHELL
b5fe885e
A
141.It Ev SCRIPT
142The
143.Ev SCRIPT
144environment variable is added to the sub-shell.
145If
146.Ev SCRIPT
147already existed in the users environment,
148its value is overwritten within the sub-shell.
149The value of
150.Ev SCRIPT
151is the name of the
152.Ar typescript
153file.
44bd5ea7
A
154.It Ev SHELL
155If the variable
156.Ev SHELL
157exists, the shell forked by
158.Nm
e1a085ba
A
159will be that shell.
160If
44bd5ea7
A
161.Ev SHELL
162is not set, the Bourne shell
e1a085ba 163is assumed.
b5fe885e 164.Pq Most shells set this variable automatically .
44bd5ea7
A
165.El
166.Sh SEE ALSO
167.Xr csh 1
b5fe885e
A
168.\".Xr filemon 4
169.\".Po
170.\"for the
171.\".Em history
172.\"mechanism
173.\".Pc .
44bd5ea7
A
174.Sh HISTORY
175The
176.Nm
177command appeared in
178.Bx 3.0 .
b5fe885e
A
179.Pp
180The
181.Fl d ,
182.Fl p
183and
184.Fl r
185options first appeared in
186.Nx 2.0
187and were ported to
188.Fx 9.2 .
44bd5ea7 189.Sh BUGS
e1a085ba 190The
44bd5ea7 191.Nm
e1a085ba 192utility places
44bd5ea7
A
193.Sy everything
194in the log file, including linefeeds and backspaces.
195This is not what the naive user expects.
e1a085ba
A
196.Pp
197It is not possible to specify a command without also naming the script file
198because of argument parsing compatibility issues.
199.Pp
200When running in
201.Fl k
202mode, echo cancelling is far from ideal.
203The slave terminal mode is checked
204for ECHO mode to check when to avoid manual echo logging.
205This does not
b5fe885e
A
206work when the terminal is in a raw mode where
207the program being run is doing manual echo.
208.Pp
209If
210.Nm
211reads zero bytes from the terminal, it switches to a mode when it
212only attempts to read
213once a second until there is data to read.
214This prevents
215.Nm
216from spinning on zero-byte reads, but might cause a 1-second delay in
217processing of user input.