xref: /freebsd/usr.bin/script/script.1 (revision fbbd9655e5107c68e4e0146ff22b73d7350475bc)
19b50d902SRodney W. Grimes.\" Copyright (c) 1980, 1990, 1993
29b50d902SRodney W. Grimes.\"	The Regents of the University of California.  All rights reserved.
39b50d902SRodney W. Grimes.\"
49b50d902SRodney W. Grimes.\" Redistribution and use in source and binary forms, with or without
59b50d902SRodney W. Grimes.\" modification, are permitted provided that the following conditions
69b50d902SRodney W. Grimes.\" are met:
79b50d902SRodney W. Grimes.\" 1. Redistributions of source code must retain the above copyright
89b50d902SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer.
99b50d902SRodney W. Grimes.\" 2. Redistributions in binary form must reproduce the above copyright
109b50d902SRodney W. Grimes.\"    notice, this list of conditions and the following disclaimer in the
119b50d902SRodney W. Grimes.\"    documentation and/or other materials provided with the distribution.
12*fbbd9655SWarner Losh.\" 3. Neither the name of the University nor the names of its contributors
139b50d902SRodney W. Grimes.\"    may be used to endorse or promote products derived from this software
149b50d902SRodney W. Grimes.\"    without specific prior written permission.
159b50d902SRodney W. Grimes.\"
169b50d902SRodney W. Grimes.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
179b50d902SRodney W. Grimes.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
189b50d902SRodney W. Grimes.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
199b50d902SRodney W. Grimes.\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
209b50d902SRodney W. Grimes.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
219b50d902SRodney W. Grimes.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
229b50d902SRodney W. Grimes.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
239b50d902SRodney W. Grimes.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
249b50d902SRodney W. Grimes.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
259b50d902SRodney W. Grimes.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
269b50d902SRodney W. Grimes.\" SUCH DAMAGE.
279b50d902SRodney W. Grimes.\"
289b50d902SRodney W. Grimes.\"	@(#)script.1	8.1 (Berkeley) 6/6/93
29c3aac50fSPeter Wemm.\" $FreeBSD$
309b50d902SRodney W. Grimes.\"
318d105abcSTom Rhodes.Dd December 4, 2013
329b50d902SRodney W. Grimes.Dt SCRIPT 1
3362500372SRuslan Ermilov.Os
349b50d902SRodney W. Grimes.Sh NAME
359b50d902SRodney W. Grimes.Nm script
369b50d902SRodney W. Grimes.Nd make typescript of terminal session
379b50d902SRodney W. Grimes.Sh SYNOPSIS
38236d2f55SPhilippe Charnier.Nm
396cff4e07SDavid E. O'Brien.Op Fl adfkpqr
408d105abcSTom Rhodes.Op Fl F Ar pipe
41e8eb82a8SPeter Wemm.Op Fl t Ar time
42c548db03SRuslan Ermilov.Op Ar file Op Ar command ...
439b50d902SRodney W. Grimes.Sh DESCRIPTION
44e8937ba0SPhilippe CharnierThe
45e8937ba0SPhilippe Charnier.Nm
46e8937ba0SPhilippe Charnierutility makes a typescript of everything printed on your terminal.
479b50d902SRodney W. GrimesIt is useful for students who need a hardcopy record of an interactive
489b50d902SRodney W. Grimessession as proof of an assignment, as the typescript file
499b50d902SRodney W. Grimescan be printed out later with
509b50d902SRodney W. Grimes.Xr lpr 1 .
519b50d902SRodney W. Grimes.Pp
529b50d902SRodney W. GrimesIf the argument
539b50d902SRodney W. Grimes.Ar file
549b50d902SRodney W. Grimesis given,
559b50d902SRodney W. Grimes.Nm
569b50d902SRodney W. Grimessaves all dialogue in
579b50d902SRodney W. Grimes.Ar file .
589b50d902SRodney W. GrimesIf no file name is given, the typescript is saved in the file
599b50d902SRodney W. Grimes.Pa typescript .
609b50d902SRodney W. Grimes.Pp
6151afb8dfSPeter WemmIf the argument
62fed771deSPhilippe Charnier.Ar command
6351afb8dfSPeter Wemmis given,
6451afb8dfSPeter Wemm.Nm
6551afb8dfSPeter Wemmwill run the specified command with an optional argument vector
6651afb8dfSPeter Wemminstead of an interactive shell.
6751afb8dfSPeter Wemm.Pp
68fed771deSPhilippe CharnierThe following options are available:
69fed771deSPhilippe Charnier.Bl -tag -width indent
709b50d902SRodney W. Grimes.It Fl a
719b50d902SRodney W. GrimesAppend the output to
729b50d902SRodney W. Grimes.Ar file
739b50d902SRodney W. Grimesor
749b50d902SRodney W. Grimes.Pa typescript ,
759b50d902SRodney W. Grimesretaining the prior contents.
76df53360cSBrian Somers.It Fl d
77df53360cSBrian SomersWhen playing back a session with the
78df53360cSBrian Somers.Fl p
79aee53c33SJoel Dahlflag, do not sleep between records when playing back a timestamped session.
808d105abcSTom Rhodes.It Fl F Ar pipe
818d105abcSTom RhodesImmediately flush output after each write.
828d105abcSTom RhodesThis will allow a user to create a named pipe using
838d105abcSTom Rhodes.Xr mkfifo 1
848d105abcSTom Rhodesand another user may watch the live session using a utility like
858d105abcSTom Rhodes.Xr cat 1 .
866cff4e07SDavid E. O'Brien.It Fl f
876cff4e07SDavid E. O'BrienCreate
886cff4e07SDavid E. O'Brien.Ar file.filemon
896cff4e07SDavid E. O'Brienor
906cff4e07SDavid E. O'Brien.Pa typescript.filemon
916cff4e07SDavid E. O'Brienusing
926cff4e07SDavid E. O'Brien.Xr filemon 4 .
93e8eb82a8SPeter Wemm.It Fl k
94ef87c4dcSGlen BarberLog keys sent to the program as well as output.
95df53360cSBrian Somers.It Fl p
96df53360cSBrian SomersPlay back a session recorded with the
97df53360cSBrian Somers.Fl r
98df53360cSBrian Somersflag in real time.
9951afb8dfSPeter Wemm.It Fl q
100df53360cSBrian SomersRun in quiet mode, omit the start, stop and command status messages.
101df53360cSBrian Somers.It Fl r
102df53360cSBrian SomersRecord a session with input, output, and timestamping.
103e8eb82a8SPeter Wemm.It Fl t Ar time
104ef87c4dcSGlen BarberSpecify the interval at which the script output file will be flushed
105ef87c4dcSGlen Barberto disk, in seconds.
1066a3e8b0aSRuslan ErmilovA value of 0
107e8eb82a8SPeter Wemmcauses
108e8eb82a8SPeter Wemm.Nm
109ef87c4dcSGlen Barberto flush after every character I/O event.
1106a3e8b0aSRuslan ErmilovThe default interval is
1114cbaceabSJoseph Koshy30 seconds.
1129b50d902SRodney W. Grimes.El
1139b50d902SRodney W. Grimes.Pp
11451afb8dfSPeter WemmThe script ends when the forked shell (or command) exits (a
1159b50d902SRodney W. Grimes.Em control-D
1169b50d902SRodney W. Grimesto exit
1179b50d902SRodney W. Grimesthe Bourne shell
1189b50d902SRodney W. Grimes.Pf ( Xr sh 1 ) ,
1199b50d902SRodney W. Grimesand
1209b50d902SRodney W. Grimes.Em exit ,
1219b50d902SRodney W. Grimes.Em logout
1229b50d902SRodney W. Grimesor
123fed771deSPhilippe Charnier.Em control-D
1249b50d902SRodney W. Grimes(if
1259b50d902SRodney W. Grimes.Em ignoreeof
1269b50d902SRodney W. Grimesis not set) for the
1279b50d902SRodney W. GrimesC-shell,
1289b50d902SRodney W. Grimes.Xr csh 1 ) .
1299b50d902SRodney W. Grimes.Pp
1309b50d902SRodney W. GrimesCertain interactive commands, such as
1319b50d902SRodney W. Grimes.Xr vi 1 ,
1329b50d902SRodney W. Grimescreate garbage in the typescript file.
133e8937ba0SPhilippe CharnierThe
134e8937ba0SPhilippe Charnier.Nm
135e8937ba0SPhilippe Charnierutility works best with commands that do not manipulate the screen.
1362cb6b4efSBrian FeldmanThe results are meant to emulate a hardcopy terminal, not an addressable one.
1379b50d902SRodney W. Grimes.Sh ENVIRONMENT
138aa2e0334SDavid E. O'BrienThe following environment variables are utilized by
1398fe908efSRuslan Ermilov.Nm :
1409b50d902SRodney W. Grimes.Bl -tag -width SHELL
1419b91846cSDavid E. O'Brien.It Ev SCRIPT
1429b91846cSDavid E. O'BrienThe
1439b91846cSDavid E. O'Brien.Ev SCRIPT
1449b91846cSDavid E. O'Brienenvironment variable is added to the sub-shell.
1459b91846cSDavid E. O'BrienIf
1469b91846cSDavid E. O'Brien.Ev SCRIPT
1479b91846cSDavid E. O'Brienalready existed in the users environment,
1489b91846cSDavid E. O'Brienits value is overwritten within the sub-shell.
1499b91846cSDavid E. O'BrienThe value of
1509b91846cSDavid E. O'Brien.Ev SCRIPT
1519b91846cSDavid E. O'Brienis the name of the
1529b91846cSDavid E. O'Brien.Ar typescript
1539b91846cSDavid E. O'Brienfile.
1549b50d902SRodney W. Grimes.It Ev SHELL
1559b50d902SRodney W. GrimesIf the variable
1569b50d902SRodney W. Grimes.Ev SHELL
1579b50d902SRodney W. Grimesexists, the shell forked by
158236d2f55SPhilippe Charnier.Nm
15987faa07bSSheldon Hearnwill be that shell.
16087faa07bSSheldon HearnIf
1619b50d902SRodney W. Grimes.Ev SHELL
1629b50d902SRodney W. Grimesis not set, the Bourne shell
1634e86fcacSSheldon Hearnis assumed.
164ef87c4dcSGlen Barber.Pq Most shells set this variable automatically .
1659b50d902SRodney W. Grimes.El
1669b50d902SRodney W. Grimes.Sh SEE ALSO
167d7deff23SSergey Kandaurov.Xr csh 1
168ef87c4dcSGlen Barber.Po
169ef87c4dcSGlen Barberfor the
1709b50d902SRodney W. Grimes.Em history
171ef87c4dcSGlen Barbermechanism
172d7deff23SSergey Kandaurov.Pc ,
173d7deff23SSergey Kandaurov.Xr filemon 4
1749b50d902SRodney W. Grimes.Sh HISTORY
1759b50d902SRodney W. GrimesThe
176236d2f55SPhilippe Charnier.Nm
1779b50d902SRodney W. Grimescommand appeared in
1789b50d902SRodney W. Grimes.Bx 3.0 .
179df53360cSBrian Somers.Pp
180df53360cSBrian SomersThe
181df53360cSBrian Somers.Fl d ,
182df53360cSBrian Somers.Fl p
183df53360cSBrian Somersand
184df53360cSBrian Somers.Fl r
185df53360cSBrian Somersoptions first appeared in
186fabb5579SBrian Somers.Nx 2.0
187fabb5579SBrian Somersand were ported to
188c89bc700SDavid E. O'Brien.Fx 9.2 .
1899b50d902SRodney W. Grimes.Sh BUGS
190e8937ba0SPhilippe CharnierThe
191e8937ba0SPhilippe Charnier.Nm
192e8937ba0SPhilippe Charnierutility places
1939b50d902SRodney W. Grimes.Sy everything
1949b50d902SRodney W. Grimesin the log file, including linefeeds and backspaces.
1959b50d902SRodney W. GrimesThis is not what the naive user expects.
19651afb8dfSPeter Wemm.Pp
19751afb8dfSPeter WemmIt is not possible to specify a command without also naming the script file
19832c21313SSteve Pricebecause of argument parsing compatibility issues.
199e8eb82a8SPeter Wemm.Pp
200e8eb82a8SPeter WemmWhen running in
201e8eb82a8SPeter Wemm.Fl k
2026a3e8b0aSRuslan Ermilovmode, echo cancelling is far from ideal.
2036a3e8b0aSRuslan ErmilovThe slave terminal mode is checked
2046a3e8b0aSRuslan Ermilovfor ECHO mode to check when to avoid manual echo logging.
2056a3e8b0aSRuslan ErmilovThis does not
206ef87c4dcSGlen Barberwork when the terminal is in a raw mode where
207ef87c4dcSGlen Barberthe program being run is doing manual echo.
20829da7547SMikolaj Golub.Pp
209ef87c4dcSGlen BarberIf
21029da7547SMikolaj Golub.Nm
211ef87c4dcSGlen Barberreads zero bytes from the terminal, it switches to a mode when it
212ef87c4dcSGlen Barberonly attempts to read
213ef87c4dcSGlen Barberonce a second until there is data to read.
214ef87c4dcSGlen BarberThis prevents
21529da7547SMikolaj Golub.Nm
216ef87c4dcSGlen Barberfrom spinning on zero-byte reads, but might cause a 1-second delay in
217ef87c4dcSGlen Barberprocessing of user input.
218