Your Terminal Works Fine — These 8 Free Tools Make It Feel New Again
GNU coreutils aren't going anywhere, but ripgrep, fd, bat, and friends will change how you live in the terminal. A practical swap list with before-and-after examples you can apply one habit at a time.
Your terminal is probably the application you use most, and the one you upgrade least. The GNU tools — grep, find, ls, cat — are reliable, universally present, and deliberately conservative. They were designed for an era of slow disks and shared mainframes. A new generation of free, open-source replacements keeps the same spirit but assumes modern hardware and modern habits: sensible defaults, color when it helps, and syntax you can remember after reading the man page once.
You do not need to replace everything on day one. The trick that works is swapping one habit at a time. Here are the eight that pay back fastest.
1. grep → ripgrep
# before: grep -r --include="*.rs" "TODO" .
# after: rg "TODO" -t rust
rg is dramatically faster on large trees, respects .gitignore by default (so you stop grepping node_modules), and prints results with line numbers and color without being asked. Install: sudo apt install ripgrep, sudo pacman -S ripgrep, or sudo dnf install ripgrep.
2. find → fd
# before: find . -name "*.log" -not -path "./vendor/*"
# after: fd -e log --exclude vendor
fd uses regex by default, reads like English, and is parallel under the hood. You will use it the moment it exists in your PATH.
3. cat / less → bat
# before: cat config.yaml
# after: bat config.yaml
Syntax highlighting, line numbers, and Git diff markers in the gutter when the file is tracked. bat also auto-pipes to a pager for long files, so bat log.txt | less still works.
4. ls → eza
# before: ls -lah
# after: eza -lah --git
Icons, color-coded file types, and a --git flag that shows per-file Git status. The tree view (eza -T) is good enough to retire a separate tree command.
5. cd → zoxide
zoxide is not a prettier cd — it learns. It ranks the directories you actually visit, so after a week of use you type z blog instead of cd ~/workspace/goals/artikel-blog-tux-wraith-otomatis. Hook it into your shell with one line (eval "$(zoxide init zsh)" in .zshrc) and it quietly becomes the fastest way to move.
6. top → btop
btop turns resource monitoring into something you can read at a glance: per-core CPU graphs, memory and swap, network throughput, and a process list you can sort and kill from the keyboard. It is the one tool on this list your friends will notice on your screen.
7. du / df → dust and duf
dust visualizes disk usage as a bar chart per directory — finding the 40 GB build folder takes seconds, not a chain of du -sh * invocations. duf does the same for mounted filesystems that df -h renders as a wall of numbers. Both read instantly.
8. man → tldr (as a companion)
This one is a workflow change, not a swap. tldr curl gives you the eight examples you actually need instead of the full manual. Keep man for the reference depth; reach for tldr when you want to remember a flag in five seconds.
The migration rules
Three rules keep this painless:
- One tool per week. Install the package, alias it (
alias ls='eza --icons'), use it daily until your fingers forget the old one. - Do not rewrite scripts. In shell scripts and CI, keep the boring GNU tools — they are everywhere, these are not.
- Learn the flags you use, not the tool. Nobody needs
bat's full feature list. You needbat -nand the knowledge that it paginates for you.
None of these tools will fix a bad workflow. But friction compounds: saving six keystrokes on every search, every listing, every directory change, hundreds of times a day, is the kind of quiet improvement that makes the terminal feel less like 1979 and more like the tool you actually want to live in.
Sources: ripgrep · fd · bat · eza · zoxide · btop · dust · duf · tldr
Reader feedback
Was this article helpful?
0 people found this article helpful.
