What you leave with.
The honest version. Twelve concrete skills, six mental models, an explicit "not yet" list, and a single transfer test that tells you if any of it stuck.
Twelve skills
Each of these is something you should be able to do, on your own machine, without looking it up. Closed-book, fingers on keys.
On your own OS, in under three seconds, from a cold start.
Know whether you're running zsh, bash, or PowerShell — and roughly what family it belongs to.
Use pwd as a reflex after every cd.
ls, with the -l and -a flags as needed.
cd .., cd ~, cd /some/path, all comfortable.
mkdir and touch, with confidence.
cat for short files. less or more when curious.
echo "..." > file to overwrite, >> to append.
cp, mv, rm. Know that rm is permanent.
Use && to run-on-success and | to pipe output into another tool like grep.
Identify the command, the kind of error, and (often) which layer produced it.
Use --help, man, or search to unblock yourself.
Six mental models
Skills decay. Mental models stick around. If we lose the commands but keep these, you'll re-learn faster than you think.
The four layers.
You → Terminal (window) → Shell (reads, interprets) → Kernel (does the work) → Hardware (the metal). Every command travels this path. When something breaks, ask which layer is at fault.
The shell is a program.
bash, zsh, and PowerShell are pieces of software someone wrote. They have versions. They have bugs. They're not mystical. You can replace them.
The filesystem is a single tree.
One root. Every file has a path from it. The terminal and the GUI look at the same tree from different angles.
Commands have a shape.
Verb · adverbs · nouns. Command · flags · arguments. Once you see the shape, every new command becomes pattern-matching, not memorization.
Output is a stream.
Commands produce text. You can send that text into a file (>), or into another command (|). Small tools, glued together, do big work.
Errors are signs on doors.
Read them literally. They almost always say exactly what couldn't happen. They aren't punishments.
Not yet
What this course does not teach. Saying it out loud matters: false confidence is more dangerous than ignorance.
You should not leave this course knowing:
- Permissions and ownership —
chmod,chown,sudo. We avoided this on purpose; misused,sudobreaks things. - Environment variables and shell configuration —
$PATH,.zshrc,.bashrc,$env:in PowerShell. - Remote work —
ssh,scp, key management. - Package managers —
brew,apt,winget,scoop. - Process management —
ps,kill,jobs,bg/fg,nohup. - Shell scripting beyond simple
&&chains — variables, loops, conditionals, functions. - Git. (We point at a sibling tool for that.)
- Editing text inside the terminal —
vim,nano,emacs. - Anything to do with networking —
curl,ping,netstat.
The transfer test
A single honest question. If a student can do this without looking anything up, they've learned what we set out to teach.
Two weeks from now, sit down at a different computer.
It's a Linux machine you've never used before. You're asked to: open a terminal, find a file called report.txt somewhere in your home directory, read its contents to a colleague over the phone, then delete a folder called old-stuff on the Desktop.
If you can do this — possibly slowly, possibly using --help once or twice — the course worked. If you freeze because the prompt is green instead of black, or because the shell says "bash" instead of "zsh," the course didn't fully land and that's worth knowing.