Recording Shell Output the Right Way

TL,DR; go and install asciinema from asciinema.org and start recording your terminal sessions.

We, the terminal geeks often need to record our shell in-order to explain something to our geek friends; or even just to showcase a new CLI tool we built yesterday night.

Recording Screen …

Sucks! Yes, it sucks. Why? couple of good reasons:

  • if you have a device with low screen resolution, record output would often get pixelated
  • there might be other distractions on screen. for example: notifications
  • no way you would be able to copy-paste command from that screen-recording into your shell.
  • no easy way to share recorded output

… and many other things.

… the Right Way!

asciinema is here to rescue. ASCIINema is a command-line tool to record a shell session. It is not just another recorder. It records ASCII characters from stdin, stdout and stderr devices. And presents the output in a way that is playable right inside the terminal.

Features

Here, I am listing the most popular and commonly used features from asciinema. For a detailed list, visit asciinema official website.

  • record quite easily. All you need is download and install asciinema binary.
  • easy to distribute. when you are done recording the session, you’ll be asked if you want to publish your recording to ASCIINema website. If not, save it locally.
  • Embeddable. Following is a asciicast of my NeoVim config :)
  • copy and paste texts from an asciicast to terminal. this especially helps when you don’t want to type a goddamn config file from a video.
  • remote ASCIINema upload server can be self-hosted.

Guess that much of features are enough to convince you :)

Installation

Loads of ways. Using:

  • Pacman - pacman -Syu asciinema
  • Debian - apt-get install asciinema
  • PyPi - pip3 install asciinema

more ways on installation page.

How to use

To start recording, type asciinema rec and hit enter. This will spwan a new shell window(which will obviously be recorded).

On recording finish, asciinema would ask whether you want to upload it to ASCIINema website. If not, it will be saved locally.

asciinema play is capable of playing a local asciicast as well as a remote asciicast from a URL.

asciinema cat spits out text available from a cast. output can be copied to system clipboard.

Conclusion

Far better than old-school screen-recording tools when it comes to terminal session recording.