My most repetitive terminal tasks are navigation and search, but for a long time, I kept using tools that felt like they belonged to a few decades ago. Eventually, typing out massive file paths and memorizing convoluted flags stopped feeling efficient. So I replaced five utilities, and my daily workflow became more efficient. While my shell isn’t fundamentally doing anything new, I’ve cut down on mindless keystrokes, and work is more enjoyable.
5 package managers that work on Windows, Mac, and Linux
If reinstalling software feels repetitive, these tools have some ideas.
Swap grep for ripgrep (rg)
I didn’t need faster search — I needed less friction to start searching
I’ve never found searching through code slow enough to warrant a complaint. However, the things that came before the actual search were the real problems.
I often had to pause just to remember the required flag. On some occasions, I found myself accidentally searching through massively ignored directories or binary files. I’ve often canceled grep runs because I forgot an option and had to retry. These were all elements that broke my flow even more than an actual performance issue would. Moving to rg was the fix.
In the past, I would use grep -R "functionName" ., but now I use rg functionName.
Switching to ripgrep (rg) totally removed the setup phase. By default, it performs a recursive search. It also respects .gitignore and automatically skips binary files. When I first learned grep, this was what I assumed it did.
|
Problem with grep |
ripgrep fixes it |
|---|---|
|
Needs recursion flags |
Recursive by default |
|
Searches ignored folders |
Respects .gitignore |
|
Hits binary files |
Automatically skipped |
When I work with minimal systems where ripgrep isn’t available, I still use grep. I also use it in scripts on minimal systems. However, I no longer reach for it for everyday work. This switch hasn’t just made me search faster, but has allowed me to stop preparing to search.
Installation command:
-
Windows 11:
winget install BurntSushi.ripgrep.MSVC -
Ubuntu / Debian:
sudo apt update && sudo apt install -y ripgrep
Swap cd for zoxide
I stopped typing full project paths
In my daily workflow, navigation felt invisible until I paid attention to how often I repeated it. I was constantly typing the same long path, like this: cd ~/Projects/client-app/frontend. Then, throughout the day, I would repeat slight variations of it.
When I switched to zoxide, that long path became something like: z client.
In the background, zoxide learns your habits, so the more you visit or use a directory, the more this tool is likely to match your intent. Once installed on your system, it works perfectly without any special configuration. It allowed me to stop thinking about paths entirely.
Here is how it compares to cd:
|
cd |
zoxide |
|---|---|
|
Exact paths required |
Fuzzy matching |
|
Manual navigation |
Learns usage patterns |
|
Repetitive typing |
Short queries |
I’ve tried a few other tools, like autojump, fasd, and z.lua. While they all solve the same problem, zoxide still feels the most consistent and works without tuning.
However, zoxide needs a few days to learn your habits, so its suggestions may be imperfect at first. But once you’re past this phase, it’s by far the best of the lot.
Installation command:
-
Windows 11:
winget install ajeetdsouza.zoxide -
Ubuntu / Debian:
sudo apt update && sudo apt install zoxide
Swap find for fd
File searches stopped feeling like syntax quizzes
Even though the find command is powerful, in daily use, I often think of it as something I have to get right. I never found the syntax intuitive, and the flags always seemed to blur together. In the middle of a command, I would typically pause just to confirm that I was writing it correctly.
When I switched to fd, a command that used to look like this: find . -name "*.js"became: fd "*.js".
While the idea of file searching is central to fd, it eliminates a lot of the cognitive overhead. It comes with more predictable syntax and cleaner output.
Here is what fd looks like stacked against find:
|
find |
fd |
|---|---|
|
Complex syntax |
Simple patterns |
|
Many flags |
Minimal options |
|
Verbose output |
Clean results |
Find allows permissions, timestamps, ownership filters, and complex boolean logic, so for these special cases, I still use it; fd doesn’t give that level of control. But for my everyday workflow, fd eliminates the perfect amount of friction that makes me ignore alternatives. fd ensures I simply describe what I want rather than constructing queries.
Installation command:
-
Windows 11:
winget install sharkdp.fd -
Ubuntu / Debian:
sudo apt update && sudo apt install fd-find
Swap cat for bat
Reading files became more informative instead of just displaying text
When I swapped cat for bat, the goal wasn’t speed but rather achieving better information presentation.
If the aim is simply to dump file contents, cat excels. But the moment files exceed a few lines, especially config files and source code, they become increasingly difficult to interpret as raw text. cat offers a flat, monochrome text wall with comments, strings, and logical functions all blended together.
bat brings visual structure, including syntax highlighting, line numbers, and Git change indicators. With longer files, you also get built-in paging.
Here is how both commands compare:
|
cat |
bat |
|---|---|
|
Raw output |
Structured view |
|
No context |
Syntax highlighting |
|
No navigation |
Paging support |
I only use cat when simplicity and universality should be prioritized over presentation. Outside of those cases, bat is my default.
Installation command:
-
Windows 11:
winget install sharkdp.bat -
Ubuntu / Debian:
sudo apt update && sudo apt install bat
Swap du for dust
Disk usage stopped being numbers and became visual maps
After using several disk usage tools, I can conclude they are generally accurate, but not always readable. When du gives you data, you need to interpret it yourself. It’s fine until you have to scan large directories, at which point interpretation becomes considerably slower.
Dust feels a lot like du, but it gives a more visual output. It shows hierarchy and lets the eye quickly see how files compare in size, making it easy to spot the largest directories.
|
du |
dust |
|---|---|
|
Outputs raw numbers |
Gives visual layout |
|
Forces manual comparison |
Creates an instant hierarchy |
|
Text-heavy output |
Shows scan-friendly view |
I also use ncdu for interactive cleanup and deeper exploration. However, dust has become my go-to when I quickly need to know what’s taking up space—those times when I know something is wrong but don’t want to investigate line by line.
Installation command:
-
Windows 11:
winget install bootandy.dust -
Ubuntu / Debian:
sudo snap install dust or cargo install du-dust
The modern terminal tools that almost made the cut
I went with a list of five, but there are other excellent modern terminal tools; I just don’t use them as often in my daily workflow.
- eza improves ls; however, I haven’t had a real bottleneck listing files.
- procs improves ps, but I don’t deal with process inspection tasks often.
- btop is one of the best system monitors; I just don’t need a full dashboard most of the time.
- xh is the cleaner curl option, but curl has already become muscle memory for me.
These tools are excellent, but they haven’t impacted my daily workflow as much as the five I chose.
- OS
-
Linux, macOS
- Developer
-
Jakob P. Liljenberg
- Price model
-
Free, Open-source
btop is a modern resource monitor for Linux and macOS that displays real-time CPU, memory, disk, and network usage in a clean, interactive terminal interface.