With Ubuntu, Debian, and other popular distributions shipping with stable desktop environments, the Linux ecosystem is more approachable than ever. But as much as I love the GUI enhancements to my favorite distros, I rely on the all-powerful Linux terminal a lot during my coding tasks and virtualization experiments. As such, I also keep my Linux virtual machines and bare-metal setups equipped with a couple of CLI tools, even when the system in question has a proper graphical interface.

Tmux

A QoL tool for terminal lovers

When you’re using terminal commands for everything from moving files and installing apps to editing configurations and debugging the underlying system, your terminal emulator will probably look as messy as mine did when I first got into the Linux ecosystem. Tmux turned out to be the solution to my unorganized terminal woes, and it even includes a couple of other features that aid my remote access workflows.

For starters, Tmux lets me split the terminal window into multiple panes, making it perfect for managing different workflows and CLI apps at once. Plus, Tmux supports session persistence, allowing me to resume my terminal tasks even if I close the window. The ability to detach active Tmux sessions and jump back into the CLI action later is especially useful when I SSH into VMs, as I often modify the network rules during my experiments. Tmux is also independent of the underlying terminal emulator, so I don’t have to worry about learning new shortcuts during my distro-hopping misadventures. Throw in tmux-resurrect, tmux-continuum, and other useful plugins, and you can see why I install Tmux before everything else on a new Linux system.

Midnight Commander

A powerful CLI file manager

GUI-based file managers are undoubtedly useful, with KDE Plasma’s Dolphin being my favorite among its brethren. But since I work with terminal commands pretty often, I prefer using Midnight Commander to access files from a text-based UI within the terminal emulator. Thanks to its dual-pane interface, Midnight Commander lets me view different directories instead of just focusing on a single folder, making file transfer tasks a cinch.

Besides letting me access .zip, .tar, and other compressed files, it also supports FTP, SFTP, and SSH links. As if that’s not enough, Midnight Commander can even browse the network shares on my NAS units. Then you’ve got the mcedit, mcview, and mcdiff utilities that ship with Midnight Commander, which support bulk file-editing, text-wrapping, macros, and a bunch of other advanced tasks.

Atop/Btop/Htop

Or even all three!

Being able to check the resource consumption metrics of all packages in real-time is quite handy, and the Atop, Btop, and Htop trio does precisely that. However, the UI and the exact amount of information revealed varies between the three, so you’ll have to pick the right tool for your monitoring needs. Or, you could follow my example by installing all three and switching between their UIs on Termux.

Anyway, Atop is a lightweight performance monitor that focuses on logging historical data, allowing you to spot detailed statistics for processes that are no longer operational. But if its text-based UI seems overwhelming, you can look into Btop, which uses different graphs to depict your system resources, with the caveat being that it doesn’t support data logging. Meanwhile, Htop combines the light, text-based design of Atop with some slight aesthetic flair from Btop.

Fzf

An easy way to access files, processes, commands, and everything in between

Even with a dedicated file manager like Midnight Commander, locating the apps can get troublesome when your setup is as disorganized as mine. Fuzzy Finder, or fzf, is a neat utility that scans the entire system for matching search results at breakneck speeds.

Once it finds anything that meets the filter criteria, fzf displays the previews in an interactive menu, and I can even pipe the search contents into other commands. Better yet, it can locate services, commands, Git history, and text data within existing files, making it extremely versatile.

Git, Curl, and Wget

To grab other packages for my Linux machine

As a Debian user, I rely on APT package manager, which includes most of the tools I need for my tinkering antics. Well, the keyword here is “most,” as I often end up needing to pull FOSS packages and lesser-known tools that aren’t available on APT. The Git, Curl, and Wget trio comes in handy, as it lets me download different packages across a variety of websites, repos, and file transfer protocols.

Technically, Git is a version control utility that includes a plethora of cool facilities for programmers. But when I’m not wearing my coding hat, I often use the git clone command to create a local copy of any Git repo and experiment with it. Wget, on the other hand, lets me download packages from typical websites, while Curl has the added advantage of pulling files from FTPS, SCP, and other protocols (and even typical APIs).

Vim

With a shout-out to Emacs

I first encountered Vim when I was searching for a neat text editor to edit files during my early Linux days, though it turned out to be significantly more advanced than I’d anticipated. Despite its light nature and solid compatibility with Linux distros, Vim includes slick macros, handy marks, different editing modes, and powerful search provisions.

Best of all, Vim integrates well with the Linux terminal, especially when I use it in tandem with the fzf.vim plugin. And I haven’t even mentioned the other plugins that can help Vim go toe-to-toe with typical code editors. Emacs also deserves a special mention here, though I tend to use its GUI app more than its CLI variant.

Plenty of other useful CLI tools in the Linux ecosystem

Aside from the utilities I’ve mentioned on this list, I use a couple of other terminal apps. Tldr’s summarized collection of commands comes in handy when I don’t want to read the never-ending documentation pages for new packages. There’s also cron, which helps me automate repetitive tasks – like backing up directories via rsync. I ran into the Sticky Notes TUI a few days before I wrote this article, and it’s a godsend for my terminal-based note-taking needs. And this article wouldn’t be complete if I didn’t mention neofetch and fastfetch, which bring some ASCII aesthetic flair to my terminal screenshots.