Most developers spend hours a day inside a terminal running the same half-dozen commands their predecessors used in the 1980s: cat to read a file, find to search for one, ls to list a folder, top to check what's eating the CPU. Those commands still work — but a newer generation of tools, mostly written in Rust or Go, does the same job with syntax highlighting, sane defaults, and features the originals were never designed for. None of them require you to change your shell or your workflow: each one is a single binary you install and start using immediately, and every tool on this list is free and open source with no subscription anywhere in sight.
The short version
| Tool | Replaces | What it adds | Price |
|---|---|---|---|
| bat | cat | Syntax highlighting, git markers, auto-paging | Free, open source |
| fd | find | Simple syntax, parallel search, respects .gitignore | Free, open source |
| eza | ls | Colors, icons, git status, built-in tree view | Free, open source |
| git-delta | git diff | Word-level highlighting, side-by-side view | Free, open source |
| Starship | Your shell prompt | One config for bash/zsh/fish/PowerShell | Free, open source |
| btop | top/htop | Mouse support, GPU + battery monitoring | Free, open source |
| ctop | docker stats | Live grid of container CPU/memory, drop into logs or a shell | Free, open source |
| Glances | top + docker stats + a dashboard | One view for CPU, disk, network and containers, in terminal, web or API | Free, open source |
bat — a cat that understands what it's reading
bat does exactly what cat does — print a file to the terminal — except it adds syntax highlighting for 200+ languages, shows git change markers in the margin, and automatically pipes long output through a pager instead of flooding your screen. It plays well with fzf, ripgrep and git, which is most of why it has 60,200+ GitHub stars.
Honest limits: raw ANSI escape sequences inside a file can render oddly, encoding support tops out at UTF-8/UTF-16, and on Debian/Ubuntu it's packaged as batcat — which trips people up the first time they try to run bat and get a 'command not found'.
fd — find, without needing to remember find's flags
fd searches for files and directories the way most people actually think about it: type a plain string or a simple pattern, get colored results back, fast, with hidden files and anything in .gitignore excluded by default. Under the hood it parallelizes the search across your filesystem, which is why it consistently benchmarks faster than find on large trees.
Honest limits: it's intentionally lighter on advanced options than find, it matches with regex by default rather than shell globs, and long-time find users will need a short adjustment period.
eza — ls with git status and a tree view built in
eza is the actively maintained successor to the abandoned exa project, and it upgrades ls with per-type coloring, file icons, native git-status columns, and a tree view you don't need a separate tree binary for. It ships grid, long, and one-per-line display modes out of the box.
Honest limits: it isn't preinstalled anywhere, so it's one more package to add to your setup, it can lag slightly behind raw ls on very large directories, and its extra flags take a bit of learning.
git-delta — diffs that show which words changed, not just which lines
git-delta replaces git's plain-text diff output with a syntax-highlighted, side-by-side view that highlights the specific words that changed inside a line — not just flags the whole line as different. It reuses bat's syntax themes, wraps long lines automatically in side-by-side mode, and turns file references into clickable links to GitHub, GitLab, SourceHut or Codeberg.
Honest limits: it needs a one-time .gitconfig setup to hook into git diff, you'll compile it or grab a pre-built binary rather than get it from a base OS install, and Windows support is less documented than Linux/macOS.
Starship — one prompt, every shell
Starship is a minimal, fast shell prompt that looks and behaves identically whether you're in bash, zsh, fish or PowerShell, and shows contextual information — current git branch and status, language runtime versions, command duration — without you scripting any of it yourself. It's written in Rust, so it renders near-instantly even with a lot of modules enabled, and the entire configuration lives in one TOML file you can copy between machines.
Honest limits: getting the prompt exactly how you want it is an upfront time investment, you need to install a Rust binary rather than rely on something preinstalled, and the project's 800+ open issues reflect a prompt with a lot of surface area to maintain.
btop, ctop and Glances — three ways to watch what your machine (or containers) are doing
These three overlap on purpose, and which one you want depends on what you're actually watching. btop is the closest thing to a full htop replacement: a mouse-friendly terminal UI with live CPU, memory, disk, network, GPU (NVIDIA/AMD/Intel) and battery graphs, plus heavily customizable themes — the tradeoff is it needs a fairly recent compiler (GCC 14+ or Clang 19+) to build from source. ctop narrows the focus to Docker and runC containers specifically: a live grid of every container's CPU, memory and network, with one keypress to drop into that container's logs or a shell — it's lightweight and widely adopted (17,800+ stars), though its development pace has slowed since mid-2024 and it's still pre-1.0. Glances goes the other direction and tries to cover everything at once — CPU, memory, disk, network, sensors and containers in a single view — accessible from the terminal, a web browser, or a REST API, with export to InfluxDB, Prometheus or PostgreSQL if you want history. That breadth comes at a cost: it needs Python 3.10+, and turning on the export features can make it noticeably heavier than the other two.
Which ones should you actually install?
If you want the smallest possible upgrade, start with bat and fd — they're drop-in, low-risk, and you'll feel the difference within a day. Add eza and git-delta once you're comfortable, since both ask a little more setup for a bigger visual change. Starship is worth it specifically if you jump between bash, zsh and fish and are tired of maintaining separate prompt configs. For monitoring, pick one: btop if you mainly care about your own machine, ctop if your day is mostly spent inside Docker, or Glances if you want one dashboard that covers both plus remote/API access. None of these lock you in — they're all a single binary, so trying one costs you nothing but an install command.