The terminal is still the most powerful tool in a developer’s toolkit — not because of nostalgia, but because text-based interfaces compose in ways that GUIs fundamentally cannot. These are the commands and patterns that actually save time.
Navigation
Jump Around the Filesystem
1 2 3 4 5 6 7 8 9 10 11 12
# Fuzzy-find and cd into any directory (requires fzf) cd $(find ~ -type d | fzf)
# Push/pop directory stack pushd /tmp/build # switch to /tmp/build, push current dir to stack popd# return to previous directory
# Return to last directory cd -
# Show the directory stack dirs -v
Better ls
1 2 3 4 5 6
# If you have eza (modern ls replacement) eza --long --git --icons --sort=modified
# Otherwise, useful aliases alias ll='ls -lhA --color=auto' alias lt='ls -lhAt --color=auto'# sort by modification time
File Operations
Find Files Efficiently
1 2 3 4 5 6 7 8 9 10 11 12 13 14
# Find by name (fast, uses a database) locate config.yml
# Update locate's database sudo updatedb
# Find with find — newer options find . -name "*.md" -newer _config.yml -type f
# Find large files find . -type f -size +10M | sort -k5 -rh
# Replace all occurrences in a file sed -i 's/landscape/vaultex/g' _config.yml
# Delete lines matching a pattern sed -i '/^#/d' config.txt
# Print only matching lines (like grep) sed -n '/theme:/p' _config.yml
# Extract between two markers sed -n '/^---$/,/^---$/p' post.md
awk for Column Extraction
1 2 3 4 5 6 7 8
# Print the second column df -h | awk '{print $2}'
# Sum a column awk '{sum += $3} END {print sum}' data.txt
# Filter and print ps aux | awk '$3 > 5.0 {print $1, $2, $3}'# processes using >5% CPU
Process Management
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# Find a process by name pgrep -l hexo
# Kill by name pkill -f "hexo server"
# Background a running process # While it's running: Ctrl+Z (suspend), then: bg# resume in background jobs# list background jobs fg %1 # bring job 1 to foreground
# Run a command immune to hangup (survives terminal close) nohup hexo server > server.log 2>&1 &
# Show resource usage in real time top # standard htop # better, if installed
SSH & Remote Work
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
# SSH with key, jump host, and port forwarding ssh -i ~/.ssh/id_ed25519 \ -J user@bastion.example.com \ -L 4000:localhost:4000 \ user@internal-server.example.com