Like many technical users, I tend to gravitate toward the terminal. The reason is that there are a lot of tools that help me be productive, or in the case of games, unproductive. Here are some of my favorite tools that help me live in the Linux terminal.
Vim
The best editor for my fingers
Any serious terminal environment requires an editor. Vim is my editor of choice. Vim has been a constant companion ever since I started using the Unix command line under macOS. This was so long ago that it was still called “Mac OS X.”
DistroTube has a screencast to demonstrate Vim on YouTube:
I’d also used its rival, GNU Emacs, for some time, but I eventually drifted back to Vim. One reason was that I bought a laptop that had a “chiclet” keyboard, and Emacs’ keystrokes felt physically uncomfortable to me. Vim just feels more comfortable for my fingers.
I also usually get into a file and get out (which stymies many first-time Vim users), and Vim suits my working style better. Vim’s modality, or working differently between command and insert modes, is something it inherited from the original Vi. It’s still controversial, but it works for me.
As with a lot of complex software programs, the trick is to get comfortable with the things you do frequently. For me, that’s moving around and making edits. Vim does what I need it to, which is why I don’t need a full-blown IDE. The terminal is my IDE.
IPython + NumPy + Python stats libraries
A desk calculator that can do stats
It’s a common joke that the interactive Python mode makes a great desk calculator. I tend to prefer it over a software calculator. The main reason is that graphical calculators are skeuomorphic. They try to imitate handheld calculators. This would work for figuring out the tip in a restaurant on your phone, but that doesn’t make a lot of sense on a machine that you don’t hold in your hands, like a PC. It’s easier to type out a formula than to click buttons.
Python’s built-in interpreter is limited. If you use the regular terminal, you know you can recall what you’ve typed with shell history and command-line editing, but those things are missing from the stock Python interpreter. IPython fixes this and adds some other features, like “magic” commands. I can also tap into Python’s libraries. I’ve installed NumPy, SciPy, SymPy, and statsmodels in a Pixi environment so I can have them immediately available.
I like having a desk calculator that can do calculus, linear algebra, and statistics. A handheld calculator with these capabilities or a package like Mathematica would cost hundreds of dollars. I have it all for free in my terminal.
tmux
Multiple terminals and staying online forever
tmux is a terminal multiplexer, a tool that lets me use one terminal as if it were many terminals. It’s similar to tabbed browsing as I can create new terminals and switch among them.
I can also detach and reattach sessions later. This feature is more useful over remote SSH or Mosh sessions. If the connection is interrupted, such as during a Wi-Fi hiccup, I can reconnect, reattach, and continue as if nothing happened.
wc
Word counting on the terminal
Being a freelance writer, I have to meet word count requirements for my pieces. There’s a command-line tool that does this easily. It’s called wc.
The -w option counts by words. I’ll copy whatever I’m writing into the clipboard and then type this command:
wc -w
Then I’ll paste into the terminal, press Ctrl + d, and then get a word count. This is handy for word counts of a selection of a piece I’m working on, such as a section.
zsh / Oh My Zsh
Easy shell customization
While Bash is the default shell on most Linux distros, zsh (pronounced “zee-shell”) is a significant upgrade. A lot of people point to its extended pattern-matching or “globbing” operations. You can recursively use wildcards in subdirectories.
zsh’s main attraction to me is the Oh My Zsh extension. It lets me customize zsh easily. One popular use is its extensive themes. My favorite is the “lukerandall” theme.
Weechat
IRC still lives
While IRC may have fallen by the wayside for most nontechnical users, it’s still handy for support for open-source programs. A lot of developers of major open-source programs hang out in IRC channels, particularly on Libera Chat. Weechat is best used with tmux on a remote server, such as on a shell account. This is how a lot of IRC users seem to stay connected 24/7.
Lynx and w3m
Text-mode web browsing
While most of my browsing is through Chrome, there are still text-based web browsers. Lynx and w3m are the premier text-based browsers still in active development. They’re useful for gauging how a site might appear to a search engine or how the text-only rendering will work. The latter is useful for designing accessible websites for people who are blind or have low vision and are using screen readers.
The other handy use is dumping the text of a website into a file for later use.
curl
Download files without a browser
curl is a utility for downloading files from a remote server. It’s ubiquitous in installation scripts.
To download a copy of a dataset of penguins in Antarctica, I’ll use this command:
curl -O https://vincentarelbundock.github.io/Rdatasets/csv/modeldata/penguins.csv
most
A nice-looking manpage viewer
Most is a paging utility for viewing things like manual pages. I like it just because it looks better than the standard less pager. You can also scroll the screen left and right as well as open multiple windows, though those aren’t features I use very often.
Games
I like to have fun in the terminal, too
I also like to have fun in the terminal. NetHack is one of my favorite games. It’s the canonical “roguelike.” You explore a procedurally-generated dungeon searching for the Amulet of Yendor. And mostly die. I hope to “ascend,” or win the game, someday.
I also like the BSD games, so named because they traditionally shipped with BSD systems. I played through them all, and a lot of them still hold up today.
Lots of things to do in the terminal
One reason that programmers and technical people use the terminal so much on Linux is that there are still a lot of things you can do there, and new programs are being written for the terminal today. I can hardly imagine my computing life without the command line.
