← All articles
TERMINAL Modern CLI Tools That Replace Unix Classics 2026-02-09 · 5 min read · cli · rust · terminal

Modern CLI Tools That Replace Unix Classics

Terminal 2026-02-09 · 5 min read cli rust terminal productivity bat ripgrep eza fd

Modern CLI Tools That Replace Unix Classics

The traditional Unix command-line tools -- cat, ls, find, grep, diff, du, top -- were written decades ago. They work, but they were designed for a different era. The modern replacements, mostly written in Rust, add syntax highlighting, better defaults, faster performance, and more intuitive interfaces.

Here's what's worth installing, what's optional, and how to set everything up.

The Must-Haves

These three tools provide the biggest day-to-day quality-of-life improvement. Install them first.

ripgrep (rg) -- Replaces grep

ripgrep is the single most impactful CLI tool upgrade you can make. It searches file contents faster than grep, respects .gitignore by default, and has sane output formatting.

# Installation
brew install ripgrep        # macOS
sudo apt install ripgrep    # Debian/Ubuntu
sudo dnf install ripgrep    # Fedora
cargo install ripgrep       # From source

# Usage
rg "TODO" src/              # Search in directory
rg -i "error" --type rust   # Case-insensitive, Rust files only
rg "function" -g "*.ts"     # Glob filter
rg -l "deprecated"          # List files only (no line content)
rg --hidden "secret"        # Include hidden files

Why it's a must-have: It's 5-10x faster than grep -r on large codebases, automatically skips binary files and .gitignore entries, and shows results with file names, line numbers, and color by default. Every major editor and tool (VS Code, Neovim, fzf) supports ripgrep as a search backend.

fd -- Replaces find

find has one of the worst command-line interfaces in Unix. fd fixes it with an intuitive syntax, colorized output, and smart defaults.

# Installation
brew install fd             # macOS
sudo apt install fd-find    # Debian/Ubuntu (binary is `fdfind`)
sudo dnf install fd-find    # Fedora
cargo install fd-find       # From source

# Usage
fd "\.ts$"                  # Find TypeScript files (regex by default)
fd config                   # Find files with "config" in the name
fd -e json                  # Find by extension
fd -t d node_modules        # Find directories only
fd -H .env                  # Include hidden files
fd --exec wc -l             # Execute command on each result

Why it's a must-have: Writing fd "\.tsx$" instead of find . -name "*.tsx" -type f saves brain cycles every single time. It also respects .gitignore by default and is significantly faster than find on large directory trees.

bat -- Replaces cat

bat adds syntax highlighting, line numbers, and git integration to file viewing. It also serves as the pager for other tools.

# Installation
brew install bat
sudo apt install bat        # Binary may be `batcat` on Debian
sudo dnf install bat
cargo install bat

# Usage
bat src/main.rs             # View file with syntax highlighting
bat -l json data.txt        # Force language detection
bat --diff                  # Show git changes inline
bat -p file.txt             # Plain output (no line numbers/header)

Configuration (~/.config/bat/config):

--theme="Catppuccin Mocha"
--style="numbers,changes,header"
--italic-text=always

Why it's a must-have: You look at file contents constantly. Syntax highlighting makes it faster to scan and understand code. bat also integrates with other tools -- set export MANPAGER="sh -c 'col -bx | bat -l man -p'" to get highlighted man pages.

The Strong Recommendations

These aren't critical, but they make daily terminal work noticeably better.

eza -- Replaces ls

eza (formerly exa) adds color-coded file types, git status indicators, and tree views to directory listings.

# Installation
brew install eza
sudo apt install eza
cargo install eza

# Usage
eza -la                     # Long list with hidden files
eza --tree --level=2        # Tree view
eza -la --git               # Show git status per file
eza --icons                 # File type icons (needs Nerd Font)

Recommended aliases:

alias ls='eza'
alias ll='eza -la --git'
alias lt='eza --tree --level=2'

delta -- Replaces diff

delta makes git diff output readable with syntax highlighting, line numbers, and side-by-side view.

# Installation
brew install git-delta
cargo install git-delta

# Git configuration (~/.gitconfig)
[core]
    pager = delta
[interactive]
    diffFilter = delta --color-only
[delta]
    navigate = true
    side-by-side = true
    line-numbers = true
    syntax-theme = "Catppuccin Mocha"
[merge]
    conflictstyle = zdiff3

Once configured, every git diff, git show, and git log -p command automatically uses delta. No workflow changes needed.

The Nice-to-Haves

Useful but not essential. Install these when you have a specific need.

dust -- Replaces du

dust shows disk usage as a visual bar chart, making it immediately obvious what's eating space.

cargo install du-dust
dust                        # Current directory
dust -r                     # Reverse sort (smallest first)
dust -d 2                   # Depth limit

bottom (btm) -- Replaces top

bottom is a graphical system monitor with CPU, memory, disk, network, and process views. It's more readable than top or htop for quick system checks.

cargo install bottom
btm                         # Launch

zoxide -- Replaces cd

A smarter cd that learns your habits. Type z proj and it jumps to the directory you visit most often that matches "proj."

brew install zoxide
eval "$(zoxide init zsh)"   # Add to .zshrc
z downloads                 # Jump to ~/Downloads
zi                          # Interactive selection with fzf

procs -- Replaces ps

Colorized process viewer with human-readable output and keyword search.

cargo install procs
procs                       # All processes
procs node                  # Filter by keyword

Installation Strategy

If you're on macOS with Homebrew, install everything in one shot:

brew install ripgrep fd bat eza git-delta zoxide dust bottom

On Fedora/RHEL:

sudo dnf install ripgrep fd-find bat eza git-delta zoxide

On Ubuntu/Debian, some tools need external repos or cargo:

sudo apt install ripgrep fd-find bat
cargo install eza git-delta du-dust bottom zoxide

Note on cargo installs: If you install from source via cargo install, make sure ~/.cargo/bin is in your PATH. These builds take a few minutes each but get you the latest versions.

Shell Alias Setup

Add these to your .zshrc or .bashrc to use the modern tools as drop-in replacements:

# Modern CLI replacements
alias cat='bat --paging=never'
alias ls='eza'
alias ll='eza -la --git'
alias lt='eza --tree --level=2'
alias find='fd'
alias grep='rg'
alias du='dust'
alias top='btm'
alias ps='procs'

A word of caution: aliasing cat to bat can break scripts that parse cat output. Some developers prefer using the new names directly (bat, rg, fd) and keeping the originals available. Your call.

Priority Ranking

If you're going to install these incrementally, here's the order that maximizes impact:

Priority Tool Replaces Impact
1 ripgrep grep Massive -- faster code search in every workflow
2 fd find High -- intuitive file finding
3 bat cat High -- syntax highlighting everywhere
4 delta diff High -- readable diffs with zero workflow change
5 eza ls Medium -- prettier directory listings
6 zoxide cd Medium -- faster directory navigation
7 dust du Low -- occasional disk space checks
8 bottom top Low -- occasional system monitoring
9 procs ps Low -- occasional process inspection

The Bottom Line

Start with ripgrep, fd, and bat. These three tools improve the commands you run most frequently with better defaults, faster performance, and more readable output. Add delta for git workflows. Then grab the rest as you feel the need. Every tool on this list is actively maintained, well-documented, and meaningfully better than what it replaces.