Script – A Simple Command To Record Your Terminal Session Activity

By default everyone prefer history command to review/recall the previously entered commands in terminal but unfortunately, that shows only the commands and doesn’t shows the commands output which was performed previously.

There are many utilities available in GUI to record the terminal session activity but very few applications are available for CLI and script is one of the best utility to record your terminal session on headless server.

It’s a best practices to record your terminal activity and keep it safe for further reference, even if you want to know the output of your command later sometime to investigate on this, it might help you.

Suggested Read : Automatically Record/Capture All Users Terminal Sessions Activity In Linux

What’s Script?

Script is a Unix command line utility that records a terminal session (in other terms, It’s record everything displayed on your terminal). It stores the output in the current directory as a text file and the default file name is typescript.

Script is one of the Linux core utility and by default pre-installed in most of the Linux distributions. The script command is part of the util-linux-ng package.

How To Check Whether Scrip Command Installed Or Not?

The script command is part of the util-linux-ng package, so grep this package to confirm whether the script command installed or not in system.

For RPM based systems

$ yum list installed | grep util-linux-ng
util-linux-ng.x86_64                              2.17.2-12.14.el6     @base

For DEB based systems

$ apt-cache policy util-linux
  Installed: 2.28.2-1ubuntu1.1
  Candidate: 2.28.2-1ubuntu1.2
  Version table:
     2.28.2-1ubuntu1.2 500
        500 yakkety-updates/main amd64 Packages
 *** 2.28.2-1ubuntu1.1 100
        100 /var/lib/dpkg/status
     2.28.2-1ubuntu1 500
        500 yakkety/main amd64 Packages

How To Use Script Command

Just type script command on terminal before start working, instantly it will start record the current terminal activity, once you have done the work, finally type exit to complete the current recording.

To initiate the recording, just type script command on terminal and you will get a message like below.

$ script
Script started, file is typescript

Let’s run few commands on terminal to check this experiment.

$ w
$ lsb_release -a
$ last
$ uname -a
$ pwd
$ free -m
$ speedtest-cli

Finally exit the script by inputting the exit command on terminal.

$ exit
Script done, file is typescript

Check Script Command Output

We have successfully exit the script command, after executing few commands for this experiment. Now, we are going to print the script command output (The default output file name is typescript) with help of cat command.

$ cat typescript 
Script started on Tuesday 04 July 2017 08:37:34 AM IST
[email protected]:~$ w
 08:37:45 up 1 day, 48 min,  1 user,  load average: 0.51, 0.27, 0.22
USER     TTY      FROM             [email protected]   IDLE   JCPU   PCPU WHAT
magi     tty7     :0               Mon07   24:48m 21:15  17.25s /sbin/upstart --user
[email protected]:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.10
Release:	16.10
Codename:	yakkety
[email protected]:~$ last

wtmp begins Mon Jul  3 07:54:43 2017
[email protected]:~$ uname -a
Linux daygeek 4.10.1-041001-generic #201702260735 SMP Sun Feb 26 12:36:48 UTC 2017 x86_64 x86_64 x86_64 GNU/Linux
[email protected]:~$ pwd
[email protected]:~$ df -h
Filesystem      Size  Used Avail Use% Mounted on
udev            979M     0  979M   0% /dev
tmpfs           200M   17M  184M   9% /run
/dev/sda1        38G   16G   20G  45% /
tmpfs           999M  152K  999M   1% /dev/shm
tmpfs           5.0M  4.0K  5.0M   1% /run/lock
tmpfs           999M     0  999M   0% /sys/fs/cgroup
tmpfs           200M  120K  200M   1% /run/user/1000
[email protected]:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1997        1585          87          22         325         246
Swap:          2045         972        1073
[email protected]:~$ speedtest-cli
Retrieving configuration...
Testing from BBNL (
Retrieving server list...
Selecting best server based on ping...
Hosted by E-Infrastructure & Entertainment India Pvt. Ltd (Bangalore) [27.56 km]: 9.772 ms
Testing download speed................................................................................
Download: 9.96 Mbit/s
Testing upload speed................................................................................................
Upload: 10.26 Mbit/s
[email protected]:~$ exit

Script done on Tuesday 04 July 2017 08:41:48 AM IST

Add A Custom Filename To Script Output

By default the script command save the output in the name of typescript. You can add a custom file name by passing a file name followed by script command, retaining the prior contents. In my case, i have input a file name called 2g-terminal.txt, you can change the filename as per your wish.

$ script 2g-terminal.txt
Script started, file is 2g-terminal.txt

Append The Output To File

When you run the script command again without -a option that will overwrite the output file. To append the output to file, use -a option followed by the filename.

$ script -a 2g-terminal.txt
Script started, file is 2g-terminal.txt

Store A Single Command Output

To store a single command output instead of an interactive shell session, use the -c option with script command. Say for example, Lynis – Security Auditing tool has 1000+ lines output, so this option very helpful for such kind of requirement.

$ script -c 'whoami' magi-terminal.txt
Script started, file is magi-terminal.txt
Script done, file is magi-terminal.txt

Run The Script Command On Quit Mode

Use -q option with script command to avoid script started and script done message on terminal while run the script command.

$ script -c 'whoami' -q magi-terminal.txt

Script Man Page

To know other options and purpose, nagivate to script command man page.

$ man script
$ script --help

Magesh Maruthamuthu

Love to play with all Linux distribution

You may also like...

  • Mark Siegel

    Script was one of my most used tools, twenty-five years ago, as a computer science student.
    It captures std-in, std-out and std-err streams.
    It also enabled capturing terminal screen escape codes. In a script session, type ‘clear’, and exit. Examine the output. Now try running vi within a script session.

  • Dan Stromberg,
    Thank you so much to letting me know about your script.

    I will give a try and update you.

  • Dan Stromberg

    FWIW, I reimplemented script(1) in python:
    It also includes a script-replay program that allows you to go forward and backward in a typescript.

Please support the site
By clicking any of these buttons you help our site to get better