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.

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
util-linux:
  Installed: 2.28.2-1ubuntu1.1
  Candidate: 2.28.2-1ubuntu1.2
  Version table:
     2.28.2-1ubuntu1.2 500
        500 http://in.archive.ubuntu.com/ubuntu yakkety-updates/main amd64 Packages
 *** 2.28.2-1ubuntu1.1 100
        100 /var/lib/dpkg/status
     2.28.2-1ubuntu1 500
        500 http://in.archive.ubuntu.com/ubuntu 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
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
magi@magi:~$ w
 08:37:45 up 1 day, 48 min,  1 user,  load average: 0.51, 0.27, 0.22
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU WHAT
magi     tty7     :0               Mon07   24:48m 21:15  17.25s /sbin/upstart --user
magi@magi:~$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 16.10
Release:	16.10
Codename:	yakkety
magi@magi:~$ last

wtmp begins Mon Jul  3 07:54:43 2017
magi@magi:~$ 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
magi@magi:~$ pwd
/home/magi
magi@magi:~$ 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
magi@magi:~$ free -m
              total        used        free      shared  buff/cache   available
Mem:           1997        1585          87          22         325         246
Swap:          2045         972        1073
magi@magi:~$ speedtest-cli
Retrieving speedtest.net configuration...
Testing from BBNL (103.5.134.167)...
Retrieving speedtest.net 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
magi@magi:~$ exit
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
magi
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
magi

Script Man Page

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

$ man script
or
$ 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: http://stromberg.dnsalias.org/~strombrg/pypty/
    It also includes a script-replay program that allows you to go forward and backward in a typescript.

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