A roundup of the fun and little-known utilities termsaver
, pv
, and calendar
. termsaver
is an ASCII screensaver for the console, and pv
measures data throughput and simulates typing. Debian’s calendar
comes with a batch of different calendars, and instructions for making your own.
Terminal Screensaver
Why should graphical desktops have all the fun with fancy screensavers? Install termsaver
to enjoy fancy ASCII screensavers like matrix, clock, starwars, and a couple of not-safe-for-work screens. More on the NSFW screens in a moment.
termsaver
is included in Debian/Ubuntu, and if you’re using a boring distro that doesn’t package fun things (like CentOS), you can download it from termsaver.brunobraga.net and follow the simple installation instructions.
Run termsaver -h
to see a list of screens:
randtxt displays word in random places on screen starwars runs the asciimation Star Wars movie urlfetcher displays url contents with typing animation quotes4all displays recent quotes from quotes4all.net rssfeed displays rss feed information matrix displays a matrix movie alike screensaver clock displays a digital clock on screen rfc randomly displays RFC contents jokes4all displays recent jokes from jokes4all.net (NSFW) asciiartfarts displays ascii images from asciiartfarts.com (NSFW) programmer displays source code in typing animation sysmon displays a graphical system monitor
Then run your chosen screen with termsaver [screen name]
, e.g. termsaver matrix
, and stop it with Ctrl+c. Get information on individual screens by running termsaver [screen name] -h
. Figure 1 is from the starwars
screen, which runs our old favorite Asciimation Wars.
The not-safe-for-work screens pull in online feeds. They’re not my cup of tea, but the good news is termsaver
is a gaggle of Python scripts, so they’re easy to hack to connect to any RSS feed you desire.
pv
The pv
command is one of those funny little utilities that lends itself to creative uses. Its intended use is monitoring data copying progress, like when you run rsync
or create a tar
archive. When you run pv
without options the defaults are:
- -p progress.
- -t timer, total elapsed time.
- -e, ETA, time to completion. This is often inaccurate as
pv
cannot always know the size of the data you are moving. - -r, rate counter, or throughput.
- -b, byte counter.
This is what an rsync
transfer looks like:
$ rsync -av /home/carla/ /media/carla/backup/ | pv sending incremental file list [...] 103GiB 0:02:48 [ 615MiB/s] [ <=>
Create a tar archive like this example:
$ tar -czf - /file/path| (pv > backup.tgz) 885MiB 0:00:30 [28.6MiB/s] [ <=>
pv
monitors processes. To see maximum activity monitor a Web browser process. It is amazing how much activity that generates:
$ pv -d 3095 58:/home/carla/.pki/nssdb/key4.db: 0 B 0:00:33 [ 0 B/s] [<=> ] 78:/home/carla/.config/chromium/Default/Visited Links: 256KiB 0:00:33 [ 0 B/s] [<=> ] ] 85:/home/carla/.con...romium/Default/data_reduction_proxy_leveldb/LOG: 298 B 0:00:33 [ 0 B/s] [<=> ]
Somewhere on the Internet I stumbled across a most entertaining way to use pv
to echo back what I type:
$ echo "typing random stuff to pipe through pv" | pv -qL 8 typing random stuff to pipe through pv
The normal echo
command prints the whole line at once. Piping it through pv
makes it appear as though it is being re-typed. I have no idea if this has any practical value, but I like it. The -L
controls the speed of the playback, in bytes per second.
pv
is one of those funny little old commands that has acquired a giant batch of options over the years, including fancy formatting options, multiple output options, and transfer speed modifiers. man pv
reveals all.
/usr/bin/calendar
It’s amazing what you can learn by browsing /usr/bin
and other commands directories, and reading man pages. /usr/bin/calendar
on Debian/Ubuntu is a modification of the BSD calendar, but it omits the moon and sun phases. It retains multiple calendars including calendar.computer, calendar.discordian, calendar.music
, and calendar.lotr
. On my system the man page lists different calendars than exist in /usr/bin/calendar
. This example displays the Lord of the Rings calendar for the next 60 days:
$ calendar -f /usr/share/calendar/calendar.lotr -A 60 Apr 17 An unexpected party Apr 23 Crowning of King Ellesar May 19 Arwen leaves Lorian to wed King Ellesar Jun 11 Sauron attacks Osgilliath
The calendars are plain text files so you can easily create your own. The easy way is to copy the format of the existing calendar files. man calendar
contains detailed instructions for creating your own calendar file.
Once again we come to the end too quickly. Take some time to cruise your own filesystem to dig up interesting commands to play with.
Learn more about Linux through the free “Introduction to Linux” course from The Linux Foundation and edX.