Thoughts on the command line interface

Published by Beto Dealmeida on

My story with the command line interface, from 1998 to today

My first experience using Linux was in 1998.

I had learned about Linux a few years before from my father, and in 1996 I volunteered at a lab in my University that had a Linux computer, mostly used for email. I didn't understand that machine. While it booted up I would see an endless scrolling of enigmatic lines, nothing that made any sense to me. And that was fascinating!

I was familiar with a command line, having learned programming on a Commodore 64, so the black terminal didn't intimidate me. But I wanted to use it, understand it. It was a glimpse of a different world, one that I wanted to conquer.

After an unsuccessful experience trying to install Red Hat on my personal computer in 1997, I discovered Slackware. I started reading the Slackware manuals, and some things started to make sense to me. I vaguely remember installing Ghostscript on my Windows 95 machine, so I could read the Postscript manuals. Printer ink was expensive for an undergrad student in Brazil, so I printed just the initial chapter on installation, so I could follow along while I installed a new operating system on the only computer of the house.

It took me days to download all the Slackware disks.

Back then I was lucky to even have dial-up at home, and I didn't have access to any computers at the University that I could use to download the disks -- all I had access to were the IBM 3270 terminals that students used to read their emails. Dial up was expensive because phone calls were expensive. To download Slackware I had to connect between midnight and 6am, a period when the calls had a fixed cost. For days I would connect immediately after midnight, go to sleep, wake up at 5:50am, and disconnect.

After a couple weeks, I had all the disks downloaded. I booted into the first one, and proceeded to install Slackware. "Do you want to install yacc? Yacc is similar to bison." [Yes]. I powered through the installation as best as I could, with the little knowledge I had -- I was an oceanography major. After going through all the disks the computed rebooted into a login prompt. I typed my username, password, and there was I, in command line.


That was the command that should take me to a graphical interface. But my graphics card was not supported by X. For me, Linux meant using the command line to write emails, browse the internet, and building parsers.

Eventually I was able to save some money and buy a graphics card that was supported. This was a few years later, when I discovered Conectiva Linux, a Brazilian distribution that later merged with Mandrake to become Mandriva. I remember trying the first version of GNOME, and also how impressed I was by KDE 1.0... "they accomplished what Windows 98 dreamed of", I remember saying.

But even then, I was still using the command line. I wrote my PhD thesis using vim, I've used grep, sed, and awk thousands of times in the last 20 years. For many years I used the mutt email client, and I'm back to it today. When I first learned about vim in the 90s I remember thinking "why would anyone use this editor?", and today I'm using it to write this blog post. I use it to write emails, and I use it to do the core of my job: programming.

Lately I started using newsboat, a command line interface news reader, for my RSS feeds. I use ncmpc to listen to music. And amfora for navigating Gemini. It's nice. I can use a 10-year old laptop to do everything. It might be nostalgia, but I like to think that new people who have never been exposed to the command line before would also see a glimpse of that world I saw back in the 90s, fascinating and mysterious.