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.
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/
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
Why it beats find: Color output, regex support, ignores junk by default.
3. bat — cat 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
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
My favorite combo: Ctrl+R replacement:
# Add to .bashrc/.zshrc
source <(fzf --zsh) # or --bash
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
Essential for any API work.
6. htop / btop — Process Monitor
htop # Classic, works everywhere
btop # Newer, prettier, same info
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
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
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
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
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
}
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.
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
What CLI tools can't you live without?
Follow @armorbreak for more developer tooling guides.
Top comments (0)