In this post, we will have a look at 7 essential command-line tools that I believe every developer should consider adding to their arsenal. I will share why I think they're useful and provide some tips and commands to help you get the most out of them.
All right, get your terminal ready and let's get right into it! 😎
1. btop: A Beautiful System Resource Monitor
When you need to keep an eye on your system's performance, btop is my go-to tool. It's similar to programs like htop
and atop
, but in my opinion, it's much more pleasing to the eye!

Btop provides a comprehensive overview of your CPU, memory, disk I/O, network usage, and running processes. It is great to spot resource hogs, as it allows you to quickly sort processes by various metrics (CPU usage, memory usage, PID, etc.).
You can use the arrow keys to navigate between different sorting columns, such as memory or CPU, and then press r to sort them by that column. You can also filter a process by pressing f and then typing its name.
Btop comes bundled with dozens of themes as well! Just press Esc to access the options, where you can customize many visual aspects of the application.
2. Ncdu: Your Disk Usage Detective
Ever found yourself wondering where all your disk space went? Ncdu is a really fast disk usage analyzer that will quickly pinpoint the culprits.

Ncdu scans your directories and presents a hierarchical view of disk usage, making it incredibly easy to identify large files and folders. More importantly, it allows you to delete unnecessary items directly from its interface, saving you precious disk space and time. This is particularly handy for cleaning up large node_modules
folders, old logs, or forgotten project artifacts.
Navigating through directories is easy: just use the arrow keys to move up and down. When you find a file or directory to delete, simply press the D key. Keep in mind that Ncdu will ask for confirmation before deletion, but once it's gone, you won't find the files in the Trash!
BTW, you can exclude folders with many files to speed things up. Simply type ncdu --exclude ~/Sites
to exclude the "Sites" directory, for example.
3. fd: The Lightning-Fast File Finder
find
is powerful, but fd is fast, user-friendly, and often exactly what you need. It's a simpler, quicker alternative for finding files in your filesystem.

fd
is designed for speed and convenience. You can run it from a high-level directory without waiting, making it perfect for large codebases or for quickly locating a file when you know its name, even partially, but have no idea which folder it is in.
You can easily filter by file type using the command: fd --extension psd
. In this example, you will see a list of available Photoshop files.
4. git-flow-next: Supercharging Your Git Workflow
If you enjoy branching workflows like Gitflow, then git-flow-next is worth exploring. It is fully compatible with the original Gitflow but includes powerful features, such as the ability to:
- Create custom branching configurations from scratch.
- Keep branches in sync with their parent branches by simply typing
git flow update
.

Once you define your own branching configuration (or use a preset — you can choose between the classic Gitflow, GitHub Flow, and GitLab Flow and then customize them), you can quickly start and finish branches to integrate their changes and delete fully merged branches.
Oh, BTW: `git-flow-next is an open-source project developed by the Tower team 😉
5. z: The Smart Directory Jumper
Tired of typing out long paths to frequently accessed directories? z is a brilliant tool that learns your habits and lets you jump to any directory with just a few keystrokes.

z
keeps track of the directories you visit most often (based on "frecency" - a combination of frequency and recency). Instead of typing cd ~/projects/my-awesome-app/src/components
, you can simply type z components
or z my-awesome
.
It's a massive time-saver for anyone who navigates their filesystem frequently!
6. Zellij: The Customizable Terminal Multiplexer
In an age where AI assistants like Claude and Gemini CLI are often used directly in the terminal, a robust terminal multiplexer is non-negotiable.
Terminal multiplexers allow you to run multiple terminal sessions within a single window, detach from them, and reattach later. This means you can keep your development environment running even if you close your terminal or lose your SSH connection.
While tmux is way more popular, Zellij offers a fantastic out-of-the-box experience with incredible customization. Zellij provides a clean, well-designed interface for managing panes and tabs, and its plugin system allows for powerful extensions.

To get started, simply type zellij -s your-saved-session
to create a new session. If you detach from the session, you can later resume it by typing zellij attach your-saved-session
.
You can also view your entire list of sessions by typing zellij list-sessions
.
7. ASDF: The Universal Runtime Version Manager
Managing multiple versions of Node.js, Python, Ruby, or any other runtime can be a headache. ASDF simplifies this by providing a single, consistent interface for managing all your runtime versions.

Instead of installing separate version managers (like nvm
for Node.js, rbenv
for Ruby, pyenv
for Python), ASDF consolidates them all. You can easily switch between different versions globally or on a per-project basis, preventing conflicts and ensuring your projects run with the correct dependencies.
To get started, install a plugin (such as Node.js or Ruby) by typing, for example, asdf plugin add nodejs
. Then, you can easily install a specific version of a runtime by typing something like asdf install nodejs 22.14.0
.
To set a global default version for a runtime, type asdf global <plugin-name> <version>
. For a project-specific version, type asdf local <plugin-name> <version>
instead; a .tool-versions
file will be created in your current directory.
Finally, you can type asdf list
to see a list of all the installed versions for the runtimes of your choosing.
We hope you enjoyed this list of CLI tools! Once you take some time to familiarize yourself with them, I think your experience using the terminal will be much more enjoyable!
For more tips and tricks, be sure to sign up for our newsletter below and follow Tower on Twitter / X and LinkedIn! ✌️
Join Over 100,000 Developers & Designers
Be the first to know about new content from the Tower blog as well as giveaways and freebies via email.