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. 12fbbd9655SWarner 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.\" 31*225afb6cSMateusz Piotrowski.Dd January 5, 2021 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 39f9177b6cSWarner Losh.Op Fl adefkpqr 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: 69*225afb6cSMateusz Piotrowski.Bl -tag -width "-F pipe" 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. 80f9177b6cSWarner Losh.It Fl e 81f9177b6cSWarner LoshAccepted for compatibility with 82f9177b6cSWarner Losh.Em util-linux 83f9177b6cSWarner Losh.Nm . 84f9177b6cSWarner LoshThe child command exit status is always the exit status of 85f9177b6cSWarner Losh.Nm . 868d105abcSTom Rhodes.It Fl F Ar pipe 878d105abcSTom RhodesImmediately flush output after each write. 888d105abcSTom RhodesThis will allow a user to create a named pipe using 898d105abcSTom Rhodes.Xr mkfifo 1 908d105abcSTom Rhodesand another user may watch the live session using a utility like 918d105abcSTom Rhodes.Xr cat 1 . 926cff4e07SDavid E. O'Brien.It Fl f 936cff4e07SDavid E. O'BrienCreate 946cff4e07SDavid E. O'Brien.Ar file.filemon 956cff4e07SDavid E. O'Brienor 966cff4e07SDavid E. O'Brien.Pa typescript.filemon 976cff4e07SDavid E. O'Brienusing 986cff4e07SDavid E. O'Brien.Xr filemon 4 . 99e8eb82a8SPeter Wemm.It Fl k 100ef87c4dcSGlen BarberLog keys sent to the program as well as output. 101df53360cSBrian Somers.It Fl p 102df53360cSBrian SomersPlay back a session recorded with the 103df53360cSBrian Somers.Fl r 104df53360cSBrian Somersflag in real time. 10551afb8dfSPeter Wemm.It Fl q 106df53360cSBrian SomersRun in quiet mode, omit the start, stop and command status messages. 107df53360cSBrian Somers.It Fl r 108df53360cSBrian SomersRecord a session with input, output, and timestamping. 109e8eb82a8SPeter Wemm.It Fl t Ar time 110ef87c4dcSGlen BarberSpecify the interval at which the script output file will be flushed 111ef87c4dcSGlen Barberto disk, in seconds. 1126a3e8b0aSRuslan ErmilovA value of 0 113e8eb82a8SPeter Wemmcauses 114e8eb82a8SPeter Wemm.Nm 115ef87c4dcSGlen Barberto flush after every character I/O event. 1166a3e8b0aSRuslan ErmilovThe default interval is 1174cbaceabSJoseph Koshy30 seconds. 1189b50d902SRodney W. Grimes.El 1199b50d902SRodney W. Grimes.Pp 12051afb8dfSPeter WemmThe script ends when the forked shell (or command) exits (a 1219b50d902SRodney W. Grimes.Em control-D 1229b50d902SRodney W. Grimesto exit 1239b50d902SRodney W. Grimesthe Bourne shell 1249b50d902SRodney W. Grimes.Pf ( Xr sh 1 ) , 1259b50d902SRodney W. Grimesand 1269b50d902SRodney W. Grimes.Em exit , 1279b50d902SRodney W. Grimes.Em logout 1289b50d902SRodney W. Grimesor 129fed771deSPhilippe Charnier.Em control-D 1309b50d902SRodney W. Grimes(if 1319b50d902SRodney W. Grimes.Em ignoreeof 1329b50d902SRodney W. Grimesis not set) for the 1339b50d902SRodney W. GrimesC-shell, 1349b50d902SRodney W. Grimes.Xr csh 1 ) . 1359b50d902SRodney W. Grimes.Pp 1369b50d902SRodney W. GrimesCertain interactive commands, such as 1379b50d902SRodney W. Grimes.Xr vi 1 , 1389b50d902SRodney W. Grimescreate garbage in the typescript file. 139e8937ba0SPhilippe CharnierThe 140e8937ba0SPhilippe Charnier.Nm 141e8937ba0SPhilippe Charnierutility works best with commands that do not manipulate the screen. 1422cb6b4efSBrian FeldmanThe results are meant to emulate a hardcopy terminal, not an addressable one. 1439b50d902SRodney W. Grimes.Sh ENVIRONMENT 144aa2e0334SDavid E. O'BrienThe following environment variables are utilized by 1458fe908efSRuslan Ermilov.Nm : 1469b50d902SRodney W. Grimes.Bl -tag -width SHELL 1479b91846cSDavid E. O'Brien.It Ev SCRIPT 1489b91846cSDavid E. O'BrienThe 1499b91846cSDavid E. O'Brien.Ev SCRIPT 1509b91846cSDavid E. O'Brienenvironment variable is added to the sub-shell. 1519b91846cSDavid E. O'BrienIf 1529b91846cSDavid E. O'Brien.Ev SCRIPT 1539b91846cSDavid E. O'Brienalready existed in the users environment, 1549b91846cSDavid E. O'Brienits value is overwritten within the sub-shell. 1559b91846cSDavid E. O'BrienThe value of 1569b91846cSDavid E. O'Brien.Ev SCRIPT 1579b91846cSDavid E. O'Brienis the name of the 1589b91846cSDavid E. O'Brien.Ar typescript 1599b91846cSDavid E. O'Brienfile. 1609b50d902SRodney W. Grimes.It Ev SHELL 1619b50d902SRodney W. GrimesIf the variable 1629b50d902SRodney W. Grimes.Ev SHELL 1639b50d902SRodney W. Grimesexists, the shell forked by 164236d2f55SPhilippe Charnier.Nm 16587faa07bSSheldon Hearnwill be that shell. 16687faa07bSSheldon HearnIf 1679b50d902SRodney W. Grimes.Ev SHELL 1689b50d902SRodney W. Grimesis not set, the Bourne shell 1694e86fcacSSheldon Hearnis assumed. 170ef87c4dcSGlen Barber.Pq Most shells set this variable automatically . 1719b50d902SRodney W. Grimes.El 1729b50d902SRodney W. Grimes.Sh SEE ALSO 173d7deff23SSergey Kandaurov.Xr csh 1 174ef87c4dcSGlen Barber.Po 175ef87c4dcSGlen Barberfor the 1769b50d902SRodney W. Grimes.Em history 177ef87c4dcSGlen Barbermechanism 178d7deff23SSergey Kandaurov.Pc , 179d7deff23SSergey Kandaurov.Xr filemon 4 1809b50d902SRodney W. Grimes.Sh HISTORY 1819b50d902SRodney W. GrimesThe 182236d2f55SPhilippe Charnier.Nm 1839b50d902SRodney W. Grimescommand appeared in 1849b50d902SRodney W. Grimes.Bx 3.0 . 185df53360cSBrian Somers.Pp 186df53360cSBrian SomersThe 187df53360cSBrian Somers.Fl d , 188df53360cSBrian Somers.Fl p 189df53360cSBrian Somersand 190df53360cSBrian Somers.Fl r 191df53360cSBrian Somersoptions first appeared in 192fabb5579SBrian Somers.Nx 2.0 193fabb5579SBrian Somersand were ported to 194c89bc700SDavid E. O'Brien.Fx 9.2 . 1959b50d902SRodney W. Grimes.Sh BUGS 196e8937ba0SPhilippe CharnierThe 197e8937ba0SPhilippe Charnier.Nm 198e8937ba0SPhilippe Charnierutility places 1999b50d902SRodney W. Grimes.Sy everything 2009b50d902SRodney W. Grimesin the log file, including linefeeds and backspaces. 2019b50d902SRodney W. GrimesThis is not what the naive user expects. 20251afb8dfSPeter Wemm.Pp 20351afb8dfSPeter WemmIt is not possible to specify a command without also naming the script file 20432c21313SSteve Pricebecause of argument parsing compatibility issues. 205e8eb82a8SPeter Wemm.Pp 206e8eb82a8SPeter WemmWhen running in 207e8eb82a8SPeter Wemm.Fl k 2086a3e8b0aSRuslan Ermilovmode, echo cancelling is far from ideal. 2096a3e8b0aSRuslan ErmilovThe slave terminal mode is checked 2106a3e8b0aSRuslan Ermilovfor ECHO mode to check when to avoid manual echo logging. 2116a3e8b0aSRuslan ErmilovThis does not 212ef87c4dcSGlen Barberwork when the terminal is in a raw mode where 213ef87c4dcSGlen Barberthe program being run is doing manual echo. 21429da7547SMikolaj Golub.Pp 215ef87c4dcSGlen BarberIf 21629da7547SMikolaj Golub.Nm 217ef87c4dcSGlen Barberreads zero bytes from the terminal, it switches to a mode when it 218ef87c4dcSGlen Barberonly attempts to read 219ef87c4dcSGlen Barberonce a second until there is data to read. 220ef87c4dcSGlen BarberThis prevents 22129da7547SMikolaj Golub.Nm 222ef87c4dcSGlen Barberfrom spinning on zero-byte reads, but might cause a 1-second delay in 223ef87c4dcSGlen Barberprocessing of user input. 224