CLI Tools: A 30-Day Plan From Zero to Fluent

2026-03-27 · SPUNK13 · spunk.bet

Command-line fluency is not a talent, it is about forty commands and a few habits. Spread over four weeks at twenty minutes a day, this is the order that builds fastest, because each stage makes the next one useful.

Week 1: movement, files and pipes

Learn cd - (jump back to the previous directory), pushd/popd, and globbing including ** with shopt -s globstar. Then the core file verbs with the flags that matter: cp -a to preserve everything, rsync -avh --dry-run src/ dst/ before any real copy, ls -lah, du -sh * | sort -h to find what is eating the disk. Finish the week on pipes: |, >, >>, 2>&1, and tee. The single mental shift that matters is that every command reads text and writes text, so anything can feed anything.

Week 2: search and text surgery

Replace grep with ripgrep: rg -n --hidden -g '!node_modules' "TODO" is faster and respects gitignore by default. Learn fd for finding files (fd -e ts -x wc -l), then the classic trio — cut -d, -f2, sort -u, uniq -c | sort -rn — which together answer most "how many of X" questions in one line. Add sed -i.bak 's/old/new/g' file and awk -F, '{s+=$3} END {print s}'. That is enough awk for years.

Week 3: the shell as an environment

Install fzf and bind it to history — Ctrl-R becomes fuzzy search over everything you have ever typed, which alone repays the week. Add zoxide so z proj jumps to the directory you use most. Learn jq properly: jq -r '.items[] | [.id, .name] | @tsv' covers most API responses. Set up tmux with three bindings — new window, split, detach — and stop losing work when SSH drops. Write your first two shell functions in ~/.bashrc or ~/.zshrc; anything you type twice a day belongs there.

Week 4: process control and remote work

Learn job control (Ctrl-Z, bg, fg, jobs), nohup and &, and how to find what is holding a port: ss -tlnp | grep 8080 or lsof -i :8080. Then ps aux --sort=-%mem | head, htop, and kill -TERM before kill -9. Finish with SSH config: a ~/.ssh/config with Host aliases, ControlMaster auto and ControlPersist 10m turns repeated connections instant, and ssh -L 5432:localhost:5432 db-host gets you a local port for a remote database.

Habits that separate fast from slow

What "pro" actually means here

Not memorising flags. It means that when a task appears — find every file over 100 MB modified this week, count errors by hour in a log, rename 400 files — you reach for a pipeline instead of a GUI, and you get it right in two attempts. Thirty days of small daily use gets most people there.

Explore More

Free tools, guides, and resources.

Visit spunk.bet
400+ ToolsCasinoMemesAstrologyScam DB