The classic Unix tools — cat, grep, find, du, ps, cd, ls — are reliable, available everywhere, and haven't changed meaningfully in decades. The modern replacements are faster, produce better output, and have sane defaults that make them more useful in a development workflow. None of them require you to abandon the originals — they install alongside them and you alias as needed.
Why These Tools Matter for Developers
Beyond personal ergonomics, these tools matter for one practical reason: speed. ripgrep is 10 to 100 times faster than grep for searching codebases. When you're searching a 50,000-file monorepo, the difference between 200ms and 15 seconds is not academic. More relevantly, AI coding tools like Claude Code and Cursor use ripgrep internally for codebase search. Understanding the tool helps you understand why codebase search behaves the way it does.
bat: Better cat
bat is cat with syntax highlighting, line numbers, and git integration showing changed lines.
Install:
brew install bat # macOS
sudo apt install bat # Ubuntu/Debian (installs as batcat)
cargo install bat # Any platform with Rust
What it adds over cat:
- Syntax highlighting for every major language
- Line numbers by default
- Git diff markers showing added/modified lines
- Automatic paging for long files (
less-style navigation) - Works as a drop-in for
catin pipelines with--plainflag
bat src/auth/middleware.ts # Highlighted TypeScript
bat -n src/config.json # Just line numbers, no paging
cat file.ts | bat -l typescript # Syntax hint in a pipeline
Configure bat in ~/.config/bat/config:
--theme="Catppuccin-mocha"
--style="numbers,changes,header"
ripgrep: Better grep
ripgrep (command: rg) searches file contents. It is faster than grep in virtually every practical scenario, respects .gitignore by default, and produces color-coded output with filename and line number context.
Install:
brew install ripgrep
sudo apt install ripgrep
cargo install ripgrep
Usage:
rg "getUserById" # Search current directory recursively
rg "getUserById" src/ # Search specific directory
rg -t ts "getUserById" # Search only TypeScript files
rg -l "TODO" # List files containing match (not lines)
rg -i "error" # Case-insensitive
rg --no-ignore "node_modules" # Search ignored directories too
rg -A 3 -B 3 "throw new Error" # Show 3 lines before and after
Why it's faster than grep: ripgrep uses SIMD instructions, processes multiple files in parallel threads, and skips binary files and version control directories automatically. On a large codebase, rg completes in under a second where grep -r takes 30+ seconds.
fd: Better find
fd finds files. It's simpler to use than find, faster, and respects .gitignore.
Install:
brew install fd
sudo apt install fd-find # Ubuntu (command is fdfind, alias to fd)
cargo install fd-find
Usage:
fd middleware # Find files with "middleware" in name
fd -e ts # Find all TypeScript files
fd -e ts -x bat {} # Find all .ts files and display with bat
fd "route.ts" src/ # Search in specific directory
fd -H ".env" # Include hidden files
fd --changed-within 1d # Files changed in the last day
Compare with the find equivalent for the last one: find . -mtime -1 -name "*.ts". fd is consistently less verbose for common operations.
delta: Better git diff
delta is a pager for git diff, git log, and git show. It adds syntax highlighting, side-by-side diffs, and line numbers.
Install:
brew install git-delta
cargo install git-delta
Configure git to use delta:
git config --global core.pager delta
git config --global interactive.diffFilter "delta --color-only"
git config --global delta.navigate true
git config --global delta.light false
git config --global delta.side-by-side true
After configuring, git diff, git log -p, and git show all use delta automatically. The side-by-side view is particularly useful for reviewing what changed in a file — removed lines on the left, new lines on the right, both syntax-highlighted.
dust: Better du
dust shows disk usage as a tree with a bar chart. Where du -sh * produces a flat list, dust shows the tree structure so you can see which subdirectory is actually consuming space.
Install:
brew install dust
cargo install du-dust
Usage:
dust # Current directory
dust -n 20 # Show top 20 entries
dust /var/log # Specific path
procs: Better ps
procs lists running processes with color, sorted by CPU or memory, and makes process names readable.
Install:
brew install procs
cargo install procs
Usage:
procs # All processes, sorted by CPU
procs node # Filter by name
procs --sortd cpu # Sort by CPU descending
zoxide: Better cd
zoxide learns which directories you visit and lets you jump to them by partial name from anywhere.
Install:
brew install zoxide
cargo install zoxide
Shell integration (add to ~/.zshrc or ~/.bashrc):
eval "$(zoxide init zsh)" # or bash, fish
Usage:
z projects # Jump to a directory with "projects" in path
z web # Jump to the most-visited directory matching "web"
zi # Interactive selection with fzf
After a few days, z proj gets you to /Users/you/code/mycompany/projects/main-app without typing the full path.
eza: Better ls
eza (fork of the abandoned exa) is a modern ls with color, git integration, and tree view.
Install:
brew install eza
cargo install eza
Useful aliases for ~/.zshrc:
alias ls="eza"
alias ll="eza -l --git"
alias la="eza -la --git"
alias lt="eza --tree --level=2"
eza -l --git shows file permissions, owner, size, date, and git status (new, modified, ignored) in one clean column output.
Install Everything at Once
macOS (Homebrew):
brew install bat ripgrep fd git-delta dust procs zoxide eza
Cargo (any platform with Rust):
cargo install bat ripgrep fd-find git-delta du-dust procs zoxide eza
Add aliases to ~/.zshrc:
alias cat="bat"
alias grep="rg"
alias find="fd"
alias ls="eza"
alias ll="eza -l --git"
alias cd="z"
The aliases are optional — you can run both the old and new tools side by side and alias gradually.
Keep Reading
- LazyGit Git Workflow Guide —
deltapairs with LazyGit for better diffs - Warp Terminal Review 2026 — A terminal that makes all of these tools more ergonomic
- Docker for Developers Guide — Where these tools help inside container workflows
Pristren builds AI-powered software for teams. Zlyqor is our all-in-one workspace — chat, projects, time tracking, AI meeting summaries, and invoicing — in one tool. Try it free.