xref: /freebsd/usr.bin/script/script.1 (revision c89bc700648598b425d4b08131d518df954e200d)
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.
129b50d902SRodney W. Grimes.\" 4. 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.\"
316cff4e07SDavid E. O'Brien.Dd Oct 27, 2012
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
40e8eb82a8SPeter Wemm.Op Fl t Ar time
41c548db03SRuslan Ermilov.Op Ar file Op Ar command ...
429b50d902SRodney W. Grimes.Sh DESCRIPTION
43e8937ba0SPhilippe CharnierThe
44e8937ba0SPhilippe Charnier.Nm
45e8937ba0SPhilippe Charnierutility makes a typescript of everything printed on your terminal.
469b50d902SRodney W. GrimesIt is useful for students who need a hardcopy record of an interactive
479b50d902SRodney W. Grimessession as proof of an assignment, as the typescript file
489b50d902SRodney W. Grimescan be printed out later with
499b50d902SRodney W. Grimes.Xr lpr 1 .
509b50d902SRodney W. Grimes.Pp
519b50d902SRodney W. GrimesIf the argument
529b50d902SRodney W. Grimes.Ar file
539b50d902SRodney W. Grimesis given,
549b50d902SRodney W. Grimes.Nm
559b50d902SRodney W. Grimessaves all dialogue in
569b50d902SRodney W. Grimes.Ar file .
579b50d902SRodney W. GrimesIf no file name is given, the typescript is saved in the file
589b50d902SRodney W. Grimes.Pa typescript .
599b50d902SRodney W. Grimes.Pp
6051afb8dfSPeter WemmIf the argument
61fed771deSPhilippe Charnier.Ar command
6251afb8dfSPeter Wemmis given,
6351afb8dfSPeter Wemm.Nm
6451afb8dfSPeter Wemmwill run the specified command with an optional argument vector
6551afb8dfSPeter Wemminstead of an interactive shell.
6651afb8dfSPeter Wemm.Pp
67fed771deSPhilippe CharnierThe following options are available:
68fed771deSPhilippe Charnier.Bl -tag -width indent
699b50d902SRodney W. Grimes.It Fl a
709b50d902SRodney W. GrimesAppend the output to
719b50d902SRodney W. Grimes.Ar file
729b50d902SRodney W. Grimesor
739b50d902SRodney W. Grimes.Pa typescript ,
749b50d902SRodney W. Grimesretaining the prior contents.
75df53360cSBrian Somers.It Fl d
76df53360cSBrian SomersWhen playing back a session with the
77df53360cSBrian Somers.Fl p
78aee53c33SJoel Dahlflag, do not sleep between records when playing back a timestamped session.
796cff4e07SDavid E. O'Brien.It Fl f
806cff4e07SDavid E. O'BrienCreate
816cff4e07SDavid E. O'Brien.Ar file.filemon
826cff4e07SDavid E. O'Brienor
836cff4e07SDavid E. O'Brien.Pa typescript.filemon
846cff4e07SDavid E. O'Brienusing
856cff4e07SDavid E. O'Brien.Xr filemon 4 .
86e8eb82a8SPeter Wemm.It Fl k
87ef87c4dcSGlen BarberLog keys sent to the program as well as output.
88df53360cSBrian Somers.It Fl p
89df53360cSBrian SomersPlay back a session recorded with the
90df53360cSBrian Somers.Fl r
91df53360cSBrian Somersflag in real time.
9251afb8dfSPeter Wemm.It Fl q
93df53360cSBrian SomersRun in quiet mode, omit the start, stop and command status messages.
94df53360cSBrian Somers.It Fl r
95df53360cSBrian SomersRecord a session with input, output, and timestamping.
96e8eb82a8SPeter Wemm.It Fl t Ar time
97ef87c4dcSGlen BarberSpecify the interval at which the script output file will be flushed
98ef87c4dcSGlen Barberto disk, in seconds.
996a3e8b0aSRuslan ErmilovA value of 0
100e8eb82a8SPeter Wemmcauses
101e8eb82a8SPeter Wemm.Nm
102ef87c4dcSGlen Barberto flush after every character I/O event.
1036a3e8b0aSRuslan ErmilovThe default interval is
1044cbaceabSJoseph Koshy30 seconds.
1059b50d902SRodney W. Grimes.El
1069b50d902SRodney W. Grimes.Pp
10751afb8dfSPeter WemmThe script ends when the forked shell (or command) exits (a
1089b50d902SRodney W. Grimes.Em control-D
1099b50d902SRodney W. Grimesto exit
1109b50d902SRodney W. Grimesthe Bourne shell
1119b50d902SRodney W. Grimes.Pf ( Xr sh 1 ) ,
1129b50d902SRodney W. Grimesand
1139b50d902SRodney W. Grimes.Em exit ,
1149b50d902SRodney W. Grimes.Em logout
1159b50d902SRodney W. Grimesor
116fed771deSPhilippe Charnier.Em control-D
1179b50d902SRodney W. Grimes(if
1189b50d902SRodney W. Grimes.Em ignoreeof
1199b50d902SRodney W. Grimesis not set) for the
1209b50d902SRodney W. GrimesC-shell,
1219b50d902SRodney W. Grimes.Xr csh 1 ) .
1229b50d902SRodney W. Grimes.Pp
1239b50d902SRodney W. GrimesCertain interactive commands, such as
1249b50d902SRodney W. Grimes.Xr vi 1 ,
1259b50d902SRodney W. Grimescreate garbage in the typescript file.
126e8937ba0SPhilippe CharnierThe
127e8937ba0SPhilippe Charnier.Nm
128e8937ba0SPhilippe Charnierutility works best with commands that do not manipulate the screen.
1292cb6b4efSBrian FeldmanThe results are meant to emulate a hardcopy terminal, not an addressable one.
1309b50d902SRodney W. Grimes.Sh ENVIRONMENT
131aa2e0334SDavid E. O'BrienThe following environment variables are utilized by
1328fe908efSRuslan Ermilov.Nm :
1339b50d902SRodney W. Grimes.Bl -tag -width SHELL
1349b91846cSDavid E. O'Brien.It Ev SCRIPT
1359b91846cSDavid E. O'BrienThe
1369b91846cSDavid E. O'Brien.Ev SCRIPT
1379b91846cSDavid E. O'Brienenvironment variable is added to the sub-shell.
1389b91846cSDavid E. O'BrienIf
1399b91846cSDavid E. O'Brien.Ev SCRIPT
1409b91846cSDavid E. O'Brienalready existed in the users environment,
1419b91846cSDavid E. O'Brienits value is overwritten within the sub-shell.
1429b91846cSDavid E. O'BrienThe value of
1439b91846cSDavid E. O'Brien.Ev SCRIPT
1449b91846cSDavid E. O'Brienis the name of the
1459b91846cSDavid E. O'Brien.Ar typescript
1469b91846cSDavid E. O'Brienfile.
1479b50d902SRodney W. Grimes.It Ev SHELL
1489b50d902SRodney W. GrimesIf the variable
1499b50d902SRodney W. Grimes.Ev SHELL
1509b50d902SRodney W. Grimesexists, the shell forked by
151236d2f55SPhilippe Charnier.Nm
15287faa07bSSheldon Hearnwill be that shell.
15387faa07bSSheldon HearnIf
1549b50d902SRodney W. Grimes.Ev SHELL
1559b50d902SRodney W. Grimesis not set, the Bourne shell
1564e86fcacSSheldon Hearnis assumed.
157ef87c4dcSGlen Barber.Pq Most shells set this variable automatically .
1589b50d902SRodney W. Grimes.El
1599b50d902SRodney W. Grimes.Sh SEE ALSO
1609b50d902SRodney W. Grimes.Xr csh 1
1616cff4e07SDavid E. O'Brien.Xr filemon 4
162ef87c4dcSGlen Barber.Po
163ef87c4dcSGlen Barberfor the
1649b50d902SRodney W. Grimes.Em history
165ef87c4dcSGlen Barbermechanism
166ef87c4dcSGlen Barber.Pc .
1679b50d902SRodney W. Grimes.Sh HISTORY
1689b50d902SRodney W. GrimesThe
169236d2f55SPhilippe Charnier.Nm
1709b50d902SRodney W. Grimescommand appeared in
1719b50d902SRodney W. Grimes.Bx 3.0 .
172df53360cSBrian Somers.Pp
173df53360cSBrian SomersThe
174df53360cSBrian Somers.Fl d ,
175df53360cSBrian Somers.Fl p
176df53360cSBrian Somersand
177df53360cSBrian Somers.Fl r
178df53360cSBrian Somersoptions first appeared in
179fabb5579SBrian Somers.Nx 2.0
180fabb5579SBrian Somersand were ported to
181*c89bc700SDavid E. O'Brien.Fx 9.2 .
1829b50d902SRodney W. Grimes.Sh BUGS
183e8937ba0SPhilippe CharnierThe
184e8937ba0SPhilippe Charnier.Nm
185e8937ba0SPhilippe Charnierutility places
1869b50d902SRodney W. Grimes.Sy everything
1879b50d902SRodney W. Grimesin the log file, including linefeeds and backspaces.
1889b50d902SRodney W. GrimesThis is not what the naive user expects.
18951afb8dfSPeter Wemm.Pp
19051afb8dfSPeter WemmIt is not possible to specify a command without also naming the script file
19132c21313SSteve Pricebecause of argument parsing compatibility issues.
192e8eb82a8SPeter Wemm.Pp
193e8eb82a8SPeter WemmWhen running in
194e8eb82a8SPeter Wemm.Fl k
1956a3e8b0aSRuslan Ermilovmode, echo cancelling is far from ideal.
1966a3e8b0aSRuslan ErmilovThe slave terminal mode is checked
1976a3e8b0aSRuslan Ermilovfor ECHO mode to check when to avoid manual echo logging.
1986a3e8b0aSRuslan ErmilovThis does not
199ef87c4dcSGlen Barberwork when the terminal is in a raw mode where
200ef87c4dcSGlen Barberthe program being run is doing manual echo.
20129da7547SMikolaj Golub.Pp
202ef87c4dcSGlen BarberIf
20329da7547SMikolaj Golub.Nm
204ef87c4dcSGlen Barberreads zero bytes from the terminal, it switches to a mode when it
205ef87c4dcSGlen Barberonly attempts to read
206ef87c4dcSGlen Barberonce a second until there is data to read.
207ef87c4dcSGlen BarberThis prevents
20829da7547SMikolaj Golub.Nm
209ef87c4dcSGlen Barberfrom spinning on zero-byte reads, but might cause a 1-second delay in
210ef87c4dcSGlen Barberprocessing of user input.
211