Feb 21, 2026 · 5 min read

Use CLI like a modern tech bro

CLI is bland as hell. Total boomer energy. If you live in the terminal, boost your QoL 2000% by adopting these CLI tools in your daily workflow.


If you are still using stock GNU tools and macOS Terminal.app, you are voluntarily slower than necessary.

Modern CLI tooling is faster, clearer, and built for how developers actually work.

This is the pragmatic stack. No fluff. No legacy baggage. CLI only.


1. Core Command Replacements

These replace what you type hundreds of times per week.


grep → ripgrep (rg)

Install

brew install ripgrep

Old

grep -r "foo" .

Modern

rg foo

Why rg:

  • Respects .gitignore automatically
  • Recursive by default
  • Extremely fast
  • Clean colored output

Stop waiting on grep -r.


find → fd

Install

brew install fd

Old

find . -type f -name "*.ts"

Modern

fd -e ts

Why fd:

  • Human-readable syntax
  • Parallel execution with x
  • Colorized output
  • Much faster

find syntax is archaeology.


cd → zoxide

Install

brew install zoxide

Add to .zshrc:

eval "$(zoxide init zsh)"

Now:

z backend

Instead of:

cd ~/projects/company/backend/src

Why zoxide:

  • Tracks where you go
  • Uses frecency (frequency + recency)
  • Instantly jumps to likely targets

This is filesystem teleportation.


ls → eza

Install

brew install eza

Add:

alias ls='eza --icons'

Why eza:

  • File icons
  • Git status indicators inline
  • Better tree views
  • Clear color coding

Plain ls feels blind after this.


cat → bat

Install

brew install bat

Add:

alias cat='bat'

Why bat:

  • Syntax highlighting
  • Line numbers
  • Git diff indicators
  • Auto paging

cat is for pipes. bat is for humans.


2. The Glue Tool: fzf (Mandatory)

If you are on macOS and not using fzf, you are playing on Hard Mode.

Install

brew install fzf
$(brew --prefix)/opt/fzf/install

Enable keybindings during install.

What You Get

  • CTRL-R → Fuzzy search shell history
  • CTRL-T → Fuzzy insert file path
  • ALT-C → Fuzzy-find directory and cd into it

This alone upgrades your shell UX.


fzf + bat Preview (File Browser Mode)

Add this alias:

alias p='fzf --preview "bat --color=always --style=numbers --line-range=:500 {}"'

Now:

fd | p

You scroll files and see live syntax-highlighted previews.

This is what file navigation should feel like.


3. Git Diff Upgrade: delta

bat is good for files.

delta is king for diffs.

Install

brew install git-delta

Add to ~/.gitconfig:

[core]
    pager = delta

Why delta:

  • Syntax-highlighted diffs
  • Side-by-side mode
  • Word-level diffing
  • Smooth navigation in large PRs

After this, raw git diff looks primitive.


4. System & Disk Tools

top → btop

Install

brew install btop

Run:

btop

Why:

  • CPU, memory, disk, network graphs
  • Mouse support
  • Clean UI
  • Replaces both top and htop

du → dust

Install

brew install dust

Run:

dust

Why:

  • Visual tree of disk usage
  • Quickly find what is eating your SSD
  • Actually readable output

man → tldr

Install

brew install tldr

Use:

tldr tar

Why:

  • Shows common examples
  • No 50-page manuals
  • Gets you unstuck fast

Alias it:

alias help='tldr'

5. Practical Alias Layer (Make It Stick)

If you do not override muscle memory, you will revert to defaults.

Add to .zshrc:

alias ls='eza --icons'
alias cat='bat'
alias grep='rg'
alias find='fd'
alias cd='z'
alias help='tldr'

fzf-Powered Workflow Aliases

Fuzzy Open File with Preview

alias v='fd --type f | fzf --preview "bat --color=always {}"'

Fuzzy Kill Process

killf() {
  ps -ef | fzf --header "Select process to kill" | awk "{print \\$2}" | xargs kill -9
}

6. The Modern CLI Stack Summary

LegacyModernWhy
greprgFaster + git-aware
findfdHuman syntax
cdzoxideIntelligent jumping
lsezaGit-aware listings
catbatHighlighted + paged
topbtopVisual dashboard
dudustDisk tree view
mantldrExample-driven help
git diffdeltaProper diff UI
history searchfzfFuzzy interactive

Minimal macOS Install (All at Once)

brew install ripgrep fd zoxide eza bat fzf git-delta btop dust tldr

Then configure:

  • zoxide
  • fzf
  • Git pager → delta
  • Aliases in .zshrc

That is the baseline.

Everything else is optional.