Best CLI tools 2026 — 25 I install on every machine
· Insights
25 CLI tools I install on every new machine — fd, rg, bat, fzf, jq, lazygit, gh, and more. With brew/apt install commands and the workflows I actually use.
25 CLI tools I install on every new machine — fd, rg, bat, fzf, jq, lazygit, gh, and more. With brew/apt install commands and the workflows I actually use, not the marketing descriptions.
File discovery
1. fd — better find
# Find all .tsx files fd -e tsx
# Find files modified in last 24 hours fd --changed-within 24h
# Find files containing "auth" in name fd auth
Replaces find everywhere. Faster (Rust, parallelized), better defaults (ignores .gitignore), saner syntax.
2. exa — better ls
# List with git status + sizes exa -lh --git
# Tree view exa --tree --level=2
Color output, git status integration, tree view. ls with makeup.
Search
3. ripgrep (rg) — better grep
# Find all uses of useState in src/ rg "useState" src/
# Find with file type filter rg "TODO" -t rust -t python
# Find in specific files rg "error" -g ".log"
Rust + parallelized. 10-100x faster than grep on large codebases. Respects .gitignore by default.
4. fzf — fuzzy finder
# Search files (use fd as backend) export FZFDEFAULTCOMMAND='fd --type f' export FZFCTRLTCOMMAND="$FZFDEFAULTCOMMAND"
# Search command history # (bind to Ctrl+R)
# Git branch switcher git checkout $(git branch -a | fzf | tr -d ' ')
Fuzzy-find files, history, branches, anything with a list. The single biggest productivity boost in my CLI life.
File viewing
5. bat — better cat
# View file with syntax highlighting bat src/app.tsx
# View without line numbers bat -p src/app.tsx
# Use as pager for git diff git config --global core.pager 'bat -p'
cat with syntax highlighting, line numbers, and git integration.
6. zoxide — better cd
# After visiting /Users/bilal/projects/my-app once: z my-app # jumps there z proj my # fuzzy match
Learns your most-visited directories. z replaces cd for any path you've been to before.