DEV Community

Alex Chen
Alex Chen

Posted on

My CLI Toolbox: 10 Tools I Use Every Day (2026)

My CLI Toolbox: 10 Tools I Use Every Day (2026)

These command-line tools save me hours every week. Here's what's in my toolbox and why.

Why CLI Tools Matter

GUI is great for discovery.
CLI is great for speed.

Once you know what you're doing, keyboard beats mouse every time.
These tools turn 10-minute GUI tasks into 30-second commands.
Enter fullscreen mode Exit fullscreen mode

The List

1. ripgrep (rg) — Blazing Fast Search

Replaces grep and find combined. Searches files instantly.

# Find all TODO comments in your project
rg "TODO|FIXME|HACK" --type-add 'code:*.{js,ts,py,go,rs}' -t code

# Case-insensitive search in specific files
rg "password" --type js -i

# With context lines
rg "function export" -C 2 ./src/
Enter fullscreen mode Exit fullscreen mode

Why it beats grep: Written in Rust, respects .gitignore, smart defaults.

Install: brew install ripgrep or apt install ripgrep

2. fd — Better find

# Find all JS files (ignores node_modules, .git automatically)
fd -e js

# Find files modified in last 7 days
fd -e js --changed-within 7days

# Execute on results
fd -e ts -x wc -l
Enter fullscreen mode Exit fullscreen mode

Why it beats find: Color output, regex support, ignores junk by default.

3. batcat with Superpowers

bat app.js          # Syntax highlighting + line numbers + git diff
bat -p app.js       # Plain mode (no headers/line numbers)
bat --list-languages  # See supported languages
Enter fullscreen mode Exit fullscreen mode

Why it beats cat: Syntax highlighting for 100+ languages, integrates with less, shows non-printable characters.

4. fzf — Fuzzy Finder for Everything

# Fuzzy file search
fzf

# Search git branches
git branch | fzf

# Search command history (GAME CHANGER)
history | fzf

# Kill processes interactively
ps aux | fzf | awk '{print $2}' | xargs kill
Enter fullscreen mode Exit fullscreen mode

My favorite combo: Ctrl+R replacement:

# Add to .bashrc/.zshrc
source <(fzf --zsh)  # or --bash
Enter fullscreen mode Exit fullscreen mode

5. jq — JSON Swiss Army Knife

# Pretty print
curl -s api.example.com/data | jq .

# Extract fields
cat package.json | jq '.dependencies | keys'

# Filter & transform
cat data.json | jq '.items[] | select(.price > 50) | {name, price}'

# Calculate
echo '[1,2,3,4,5]' | jq 'add'        # → 15
echo '[1,2,3,4,5]' | jq 'add / length' # → 3
Enter fullscreen mode Exit fullscreen mode

Essential for any API work.

6. htop / btop — Process Monitor

htop   # Classic, works everywhere
btop   # Newer, prettier, same info
Enter fullscreen mode Exit fullscreen mode

Shows CPU, memory, processes per core, tree view. Press F5 for tree mode, F6 to sort, F9 to kill.

7. tldr — Simplified Man Pages

tldr tar           # Practical examples, not reference manual
tldr curl          # Most common use cases only
tldr docker        # Actually useful commands
Enter fullscreen mode Exit fullscreen mode

Why it beats man: Shows examples first. No reading through 500 lines of flags you'll never use.

8. zoxide — Smarter cd

z src            # Jumps to ~/projects/my-app/src
z logs           # Jumps to /var/log/nginx
z dotfiles       # Jumps to ~/.dotfiles
Enter fullscreen mode Exit fullscreen mode

Learns from your cd history. Ranks by "frecenty" (frequency + recency).

9. delta — Better Git Diffs

# In .gitconfig
[core]
    pager = delta

[interactive]
    diffFilter = delta --color-only

[delta]
    navigate = true
    side-by-side = true
    line-numbers = true
    syntax-theme = Dracula
Enter fullscreen mode Exit fullscreen mode

Features: syntax highlighting within diffs, side-by-side view, improved formatting.

10. tmux — Terminal Multiplexer

# Start a session
tmux new -s work

# Split panes
Ctrl-b %     # Horizontal split
Ctrl-b "     # Vertical split
Ctrl-b o     # Switch between panes

# Detach and reattach (survives SSH disconnect!)
tmux detach  # or Ctrl-b d
tmux attach -t work

# Multiple windows
tmux new-window -n server
tmux select-window -t server
Enter fullscreen mode Exit fullscreen mode

Why it matters: Your terminal sessions survive network drops. Run long-running tasks on remote servers without worry.

Bonus: My Shell Setup

# ~/.bashrc essentials

# History with timestamps
export HISTTIMEFORMAT='%F %T '
export HISTSIZE=10000
shopt -s histappend

# Useful aliases
alias ll='ls -alh'
alias gs='git status'
alias gp='git push'
alias ..='cd ..'
alias ...='cd ../..'

# Quick functions
mkcd() { mkdir -p "$1" && cd "$1"; }
extract() {
  if [ -f "$1" ]; then
    case "$1" in
      *.tar.bz2) tar xjf "$1" ;;
      *.tar.gz)  tar xzf "$1" ;;
      *.bz2)     bunzip2 "$1" ;;
      *.rar)     unrar x "$1" ;;
      *.gz)      gunzip "$1" ;;
      *.tar)     tar xf "$1" ;;
      *.tbz2)    tar xjf "$1" ;;
      *.tgz)     tar xzf "$1" ;;
      *.zip)     unzip "$1" ;;
      *.Z)       uncompress "$1" ;;
      *)         echo "'$1' cannot be extracted via extract()" ;;
    esac
  fi
}
Enter fullscreen mode Exit fullscreen mode

How These Tools Work Together

Real workflow example:

1. fzf → fuzzy-find the project directory
2. zoxide → jump there fast
3. fd → find relevant source files
4. rg → search for the function I need to change
5. bat → read the current code with highlighting
6. jq → parse API response while debugging
7. tmux → keep everything running in organized panes
8. htop → check if my changes caused memory issues

Result: Never leave the terminal.
Enter fullscreen mode Exit fullscreen mode

Installation One-Liner

# Ubuntu/Debian
sudo apt install ripgrep fd-find bat fzf jq htop tldr tmux

# Some tools need different names on Debian
mkdir -p ~/.local/bin
ln -sf /usr/bin/fdfind ~/.local/bin/fd
ln -sf /usr/bin/batcat ~/.local/bin/bat

# macOS
brew install ripgrep fd bat fzf jq htop btop tldr tmux zoxide delta
Enter fullscreen mode Exit fullscreen mode

What CLI tools can't you live without?

Follow @armorbreak for more developer tooling guides.

Top comments (0)