The Case for Upgrading Your CLI Toolkit
ls, grep, cat, find โ these tools work, but they were designed in an era before color terminals, interactive filtering, and multi-core CPUs. Modern replacements do the same job faster, with better output, and often with git-awareness.
Here are the tools worth installing in 2026.
eza โ Replaces ls
eza (formerly exa) is a modern ls with colors, icons, git status, and tree view:
# Install
brew install eza # macOS
cargo install eza # or via cargo
# Usage
eza -la # Long list with hidden files
eza --tree # Tree view
eza -la --git # Show git status per file
eza --icons # With file type icons (needs Nerd Font)
# Alias in .bashrc/.zshrc
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias tree='eza --tree'
ripgrep (rg) โ Replaces grep
ripgrep is 3-5x faster than grep, respects .gitignore by default, and has better output formatting:
# Install
brew install ripgrep
# Basic search
rg "useState"
# Search specific file types
rg "TODO" --type ts
# Case insensitive
rg -i "error"
# Show context (3 lines before/after)
rg -C 3 "login"
# Count matches per file
rg --count "import"
# Search in hidden files (normally excluded)
rg --hidden "secret"
No more grep -r --include="*.ts" "pattern" ..
fd โ Replaces find
fd is a faster, simpler find with better defaults:
# Install
brew install fd
# Find files by name (case insensitive by default)
fd component
fd ".tsx" --type f
# Find and execute
fd ".log" --exec rm {}
# Find in specific directory
fd "config" src/
# Respects .gitignore (like rg)
# Unlike: find . -name "*.ts" -not -path "*/node_modules/*"
bat โ Replaces cat
bat is cat with syntax highlighting, line numbers, and git diff indicators:
# Install
brew install bat
# Usage
bat src/api.ts # Syntax highlighted view
bat -n src/api.ts # With line numbers only
bat --diff src/api.ts # Show git changes highlighted
# Use as pager for man pages
export MANPAGER="sh -c 'col -bx | bat -l man -p'"
delta โ Better Git Diffs
delta replaces git's default diff output with syntax-highlighted, side-by-side diffs:
# Install
brew install git-delta
# ~/.gitconfig
[core]
pager = delta
[interactive]
diffFilter = delta --color-only
[delta]
navigate = true
light = false
side-by-side = true
zoxide โ Replaces cd
zoxide learns which directories you visit and lets you jump to them with partial names:
# Install
brew install zoxide
# Add to shell (zsh):
echo 'eval "$(zoxide init zsh)"' >> ~/.zshrc
# Usage
cd ~/Projects/my-company/frontend/src # First time
# Then from anywhere:
z src # jumps to ~/Projects/my-company/frontend/src
z frontend # jumps there too
zi # interactive fuzzy finder for your directories
fzf โ Fuzzy Finder for Everything
fzf is a general-purpose fuzzy finder that integrates with everything:
# Install
brew install fzf
$(brew --prefix)/opt/fzf/install # Install keybindings
# After install, in your terminal:
Ctrl+R # Fuzzy search command history
Ctrl+T # Fuzzy search files in current directory
Alt+C # Fuzzy cd to subdirectory
httpie โ Replaces curl for APIs
httpie is curl with a human-friendly interface:
# Install
brew install httpie
# GET request (vs curl -s -X GET https://... | jq .)
http GET https://api.example.com/users
# POST with JSON body
http POST https://api.example.com/users name="Alice" email="alice@example.com"
# With auth header
http GET https://api.example.com/protected Authorization:"Bearer $TOKEN"
Quick Install Script
brew install eza ripgrep fd bat git-delta zoxide fzf httpie
Add to ~/.zshrc:
# Modern CLI replacements
alias ls='eza --icons'
alias ll='eza -la --icons --git'
alias cat='bat'
alias grep='rg'
alias find='fd'
eval "$(zoxide init zsh)"
Key Takeaways
ezaโlswith colors, icons, git status, tree viewripgrep(rg) โgrepthat's 3-5x faster and respects.gitignorefdโfindthat's simpler and respects.gitignorebatโcatwith syntax highlightingdeltaโ better git diffs with syntax highlightingzoxideโcdthat learns your directories- All installable via
brew installin one line