The old Unix tool chain is fine. The problem is that it has not moved in decades, and the small terminal jobs a developer does 50 times a day (find a file, search in files, list a directory, jump to a project) all have better replacements now. Every one is open source, ships as a single binary, and is small enough that installing all eight of them together takes less disk than a Chrome update.
We tested 8 replacement CLI tools on Windows, macOS, and Linux. Each pick actually replaces its classic counterpart in daily use and is maintained on GitHub with real activity.
What to look for in a modern CLI tool
The bar is not “cool feature list”. It is “will you keep using this in a month”.
- Sane defaults. Zero-config output that looks better than the classic tool.
- Cross-platform. If it only works on Linux, the same terminal on your Windows laptop is stuck with the old one.
- Fast. If it is slower than the tool it replaces on a small directory, it is dead on arrival.
- Small binary. Single-file, no runtime dependency chain.
- Backwards-friendly. Enough compatibility with classic syntax to work in muscle memory.
Quick comparison table
| App | Best for | Platforms | Free plan | Starting price/mo | Rating |
|---|---|---|---|---|---|
| fd | Faster and friendlier find |
Windows, macOS, Linux | Fully free | Free | Highly rated on GitHub |
| ripgrep | Faster and friendlier grep |
Windows, macOS, Linux | Fully free | Free | Community standard |
| bat | cat with syntax highlighting |
Windows, macOS, Linux | Fully free | Free | Widely adopted |
| eza | Modern ls replacement |
Windows, macOS, Linux | Fully free | Free | Active fork of exa |
| fzf | Fuzzy finder for anything | Windows, macOS, Linux | Fully free | Free | Long-running favorite |
| jq | JSON transformation | Windows, macOS, Linux | Fully free | Free | Ubiquitous in scripts |
| zoxide | Smarter cd |
Windows, macOS, Linux | Fully free | Free | Broad developer adoption |
| btop | Cleaner htop and system monitor |
Windows, macOS, Linux | Fully free | Free | High Reddit visibility |
The apps
1. fd – Best for finding files quickly
fd replaces find with saner defaults: automatic gitignore respect, colorized output, and a syntax that does not require reading a man page. fd config recursively finds every file with “config” in the name in the current directory. That is what find should have looked like all along.
Where it falls short: Some find-native features (-exec semantics, complex conditionals) are still faster in the classic tool.
Pricing:
- Free: Everything, MIT license
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The daily driver for filename searches once you install it.
2. ripgrep – Best for searching inside files
ripgrep (rg) is grep, but ordersof-magnitude faster on large repos and with far better defaults: gitignore respect, colored output, and Unicode-aware matching. rg "authenticate" inside a 500,000-line codebase returns in a fraction of a second.
Where it falls short: Some POSIX-specific regex features work differently; edge cases require the -P PCRE flag.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The single tool that changes daily codebase navigation the most.
3. bat – Best for reading files in the terminal
bat is cat with syntax highlighting, line numbers, and pager integration. Reading a config file, a script, or a small source file in the terminal becomes readable rather than a wall of monochrome text. Aliased to cat in most setups without breaking downstream commands.
Where it falls short: Piping into other tools sometimes needs --plain to strip decorations.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The most-quality-of-life-per-byte install on this list.
4. eza – Best modern ls replacement
eza is the maintained fork of exa. Colorized long-listing output, tree view (-T), Git status column, human-readable sizes by default. A single install and one shell alias replaces the mental cost of ls -lha --color=auto.
Where it falls short: Some flags differ from ls; a rare script that runs ls and parses output will need adjustment.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The straight replacement for ls on any machine you touch daily.
5. fzf – Best fuzzy finder for anything
fzf is the interactive fuzzy finder that other tools plug into. Type Ctrl-R in a shell configured with fzf and command history becomes searchable. Pipe any list into fzf and it becomes interactively filterable. Vim, Neovim, and every modern editor has an fzf integration.
Where it falls short: Learning curve for the keybind ecosystem takes a week.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The one tool that lifts every other tool it plugs into.
6. jq – Best for command-line JSON
jq is the tool for extracting values out of JSON in a pipeline. curl api.example.com | jq '.users[].email' is a one-liner instead of a script. Comes preinstalled or trivially installable everywhere, and the query language rewards a few hours of learning with a lifetime of one-liners.
Where it falls short: Query syntax is its own thing to learn; expect a “not intuitive” phase before it clicks.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The one tool that turns “let me write a script” into “let me pipe it”.
7. zoxide – Best smarter cd
zoxide learns which directories you actually spend time in and lets you jump there with a partial name. z proj after using /home/you/work/project-name/backend a few times jumps directly there from anywhere in the filesystem. Works with any shell.
Where it falls short: Requires a shell hook and a bit of history before it becomes useful.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: Ten seconds saved per project switch adds up faster than you think.
8. btop – Best system monitor
btop is the terminal system monitor with the best default look and the smoothest interaction. CPU, memory, disk, network, per-process, all in one screen with mouse support and configurable themes. Uses less CPU than htop while showing more.
Where it falls short: On Windows, some sensors are still limited compared to Linux.
Pricing:
- Free: Everything
- Paid: Not applicable
Platforms: Windows, macOS, Linux
Download: GitHub
Bottom line: The pretty, useful replacement for htop or top.
How to pick the right one
- If you install only one from this list: ripgrep. The daily hit rate is higher than anything else.
- If you spend time reading files in the terminal: bat.
- If you spend time listing directories: eza.
- If you have ever cursed
findsyntax: fd. - If you jump between projects several times a day: zoxide.
- If you work with any JSON API in scripts: jq.
- If you use command-line history heavily: fzf.
- If you like keeping an eye on system load: btop.
FAQ
Are these tools drop-in replacements for the classic Unix tools?
Mostly. bat and eza alias easily. ripgrep, fd, jq, and zoxide are not literal replacements; the syntax is different but the workflows are strictly better.
Do these work on Windows?
Yes. Every tool on this list has official Windows builds, either as a single .exe or via Scoop and Winget.
Can I install all of them at once?
On macOS: brew install fd ripgrep bat eza fzf jq zoxide btop. On Ubuntu, most are in apt, with bat, eza, and zoxide sometimes needing a fresher source. On Windows, Scoop’s main bucket has them all.
Do they replace shell scripts? They make many shell scripts short enough to be a one-liner. They do not replace scripting itself; they just raise the ceiling on what fits on one line.
Which of these use the most disk space? All of them together are well under 100 MB installed. Individually most are 2 to 8 MB single binaries.
Are they safe to install from GitHub? Every project on this list is well-established, actively maintained, and downloaded by millions. Install from the official GitHub releases or your platform’s package manager, not from mirror sites.