The terminal is where developers spend significant time. Modern CLI tools improve on Unix classics with better defaults, performance, and usability. Here are the ones worth adopting.
File Operations
fd (find replacement)
# Find all TypeScript files
fd -e ts
# Find files matching a pattern, excluding node_modules
fd "component" --type f --exclude node_modules
# Find and delete all .DS_Store files
fd -H .DS_Store -x rm
fd is faster than find, respects .gitignore by default, and has sane syntax.
ripgrep (grep replacement)
# Search for a pattern
rg "useState" --type ts
# Search with context
rg "TODO" -C 2
# Count matches per file
rg "import" --count
Ripgrep is significantly faster than grep on large codebases and respects .gitignore out of the box.
eza (ls replacement)
# Tree view with git status
eza --tree --git-ignore -L 3
# Long format with icons
eza -la --icons
Better formatting, git integration, and tree view built in.
Shell and Navigation
zoxide (cd replacement)
# Jump to a frequently used directory
z projects
# Interactive selection
zi
Zoxide learns your habits and lets you jump to directories with partial names. After a week of use, you’ll never type full paths again.
fzf (fuzzy finder)
# Find and open a file
vim $(fzf)
# Search command history
Ctrl+R # (with fzf integration)
# Kill a process interactively
kill -9 $(ps aux | fzf | awk '{print $2}')
fzf turns any list into an interactive fuzzy search. The shell history integration alone is worth the install.
starship (prompt)
A fast, customizable prompt that shows relevant context:
~/projects/my-app on main [!+] via v20.11.0 took 3s
❯
Git branch, language versions, command duration, error indicators — all automatic and fast.
Development Tools
jq (JSON processing)
# Pretty-print JSON
curl -s api.example.com/data | jq .
# Extract fields
cat data.json | jq '.users[] | {name, email}'
# Filter and transform
jq '.items | map(select(.price > 100)) | length' catalog.json
bat (cat replacement)
Syntax highlighting, git integration, and line numbers by default:
bat src/main.ts
delta (diff viewer)
Side-by-side diffs with syntax highlighting. Use it as your git pager:
git config --global core.pager delta
The Meta-Advice
Don’t try to adopt everything at once. Pick one tool, use it for a week, and see if it sticks. The best tool is the one you actually use.