No Stupid Questions

Terminal Basics
For People Who Hire People

You've been told to "just open a terminal" and "run this command." Maybe you've done it once and felt like a hacker — or stared at a black box and closed it. This is the missing piece between using AI and actually building with it.

⏱ ~15 min read 🧠 5 concepts 🛠 Hands-on with Homebrew ✅ Knowledge check included
Concept 01

What's the Terminal?

The terminal is just a text window where you type commands and your computer types back. It's been around longer than Windows, longer than the Mac mouse — and almost every powerful dev tool still lives there.

The conversation analogy

Imagine your computer as a very capable assistant who only speaks one language: short commands. Every app on your Mac has a graphical face (windows, buttons, menus), but underneath, your computer takes orders as text. The terminal is the door to that text-based conversation.

A graphical app says: "Click here, drag this, drop it there." The terminal says: "Tell me exactly what you want, and I'll do it." Slower to learn, way faster to use once you know a handful of commands.

📚
Three words to know

Terminal — the app (the window itself). On Mac, it's literally called "Terminal." Shell — the language inside the window that interprets your commands (on modern Mac, this is zsh; older Macs and most Linux servers use bash). Prompt — the little symbol (usually $ or %) that tells you the shell is ready for your next command.

💲
Why some prompts show $ and others %

Different shells use different prompt characters. $ = bash and most Unix shells (the default on Mac until 2019). % = zsh (the default on every modern Mac since macOS Catalina). Same idea, different cosmetic character — and for everything in this module, they behave identically.

Important when copy-pasting from tutorials: the $ or % is the prompt the shell shows you — don't type it. Only type what comes after.

⌨️ You (typing in the terminal)
ls ~/Documents
resume.pdf · notes.md · jobs/
💻 Your Mac (the shell)
Click to run a command

Why this matters for recruiters

You don't need the terminal to do your job. But almost every interesting tool, tutorial, and AI workflow on the internet assumes you can open one and run a couple commands. Learning the basics unlocks:

Concept 02

Why Terminal? (Three Flavors of Claude)

If you've used Claude.ai or Claude Desktop and they've worked fine — fair question. Why bother with the terminal at all? Here's the honest answer: there are three different surfaces for Claude, and each one unlocks more than the last. The terminal sits at the powerful end.

📌
The three surfaces we're comparing

1. Claude Chat — claude.ai in your browser, or the Claude Desktop chat app. Pure conversation. The thing you've probably already used.

2. Claude Code Desktop (GUI) — Anthropic's agentic coding tool with a desktop app interface (Chat / Cowork / Code tabs, sessions sidebar, routines builder).

3. Claude Code Terminal (CLI) — the same Claude Code, but run via claude in your terminal.

Same Claude model under all three. The differences are about what each interface lets Claude do and where it fits in your workflow.

Why "three tiers"?

Each surface gives Claude progressively more access to your work.

Same model. Three levels of "permission" to actually do stuff for you.

Capability Claude Chat Code Desktop (GUI) Code Terminal (CLI)
Foundation
Same Claude modelYesYesYes
Conversation / chatNativeYesYes
Memory across sessionsBasicFullFull
Files & your computer
Read & write files on your computerUpload onlyDirectlyDirectly
Edit existing code or docsCan'tYesYes
Run shell commandsCan'tYesYes
Extensibility
MCP serversRemote onlyAll MCPsAll MCPs
Skills, hooks, pluginsNoYesYes
CLAUDE.md project contextNoYesYes
Routines / scheduled tasksNoUI builderConfig-based
Workflow fit
Browsing past sessions visuallyYesSidebarLimited
Working inside a project folderN/ANavigate via UIcd && claude
Compose with shell tools (pipes, scripts)NoNoNative
Multiple parallel sessionsPer tabOneMany
Setup
Friction to get startedNoneInstall appInstall Node + CLI
Easy for non-engineersYesYesLearning curve
💬 Use Claude Chat when…
  • You want to chat, brainstorm, or draft copy
  • You're analyzing a doc you can upload once
  • You want zero setup (just open the browser)
  • You're helping a non-technical teammate
🖥 Use Code Desktop when…
  • You want Claude to read/edit your real files
  • You want skills, MCPs, routines — visible in a UI
  • You want a friendly on-ramp to Claude Code
  • You jump in and out of sessions over days
⌨️ Use Code Terminal when…
  • You're already in a project folder doing dev work
  • You want to compose Claude with shell tools
  • You want multiple parallel sessions
  • You prefer speed over UI
🚪
The growth path most recruiters take

Start in Claude Chat — see what's possible, get comfortable. Move to Code Desktop when you want Claude to actually do things to your files (the moment you think "I wish I could just point Claude at this folder"). Move to Code Terminal when you're working in a project folder daily and want the lowest-friction version. Most people end up using all three — picking based on the task.

The trade-off in one line

Chat trades capability for accessibility. Code Desktop trades speed for discoverability. Code Terminal trades onboarding for composability. Same Claude model under all three — the interface decides what Claude can actually do for you.

Concept 03

Your First Commands

There are six commands that get you 80% of the way to "I can follow any tutorial on the internet." Learn them once, and the terminal stops looking scary.

Open the terminal first

On Mac: press ⌘ + Space, type "Terminal," hit Enter. A black (or white) window opens with a prompt like ~ % or ~ $. That's the terminal. Everything below assumes you've got that window open.

Type each command, hit Enter, see what happens. You cannot break your computer doing the things below.

pwd
Print Working Directory — tells you what folder you're currently "in." Think of it as "where am I right now?"
pwd
/Users/yourname
Try it: type pwd and press Enter
ls
List — shows what's in the current folder. Like opening a Finder window without leaving the terminal.
ls
Applications Desktop Documents Downloads Music
ls -la
drwxr-xr-x shows hidden files and details (size, date)
Try it: type ls to see your home folder contents
cd
Change Directory — moves you into a different folder. The terminal equivalent of double-clicking a folder in Finder.
cd Documents
(no output — you're now inside Documents)
cd ..
(moves you up one level)
cd ~
(jumps back to your home folder. ~ means "home")
Try it: cd Documents, then pwd to confirm you moved
cat
Concatenate (read a file) — prints the contents of a text file right in the terminal. Quick way to peek at a file without opening it in an app.
cat notes.txt
whatever you wrote in notes.txt prints here
Try it: only works on text files (.txt, .md, .json). Don't try it on .pdf or .docx
mkdir
Make Directory — creates a new folder. Same as right-click → New Folder in Finder.
mkdir my-new-folder
(creates "my-new-folder" in your current location)
Try it: make a folder called "terminal-test," then cd terminal-test into it
--help (and --version)
Built-in cheat sheet — almost every command-line tool has a --help flag that prints what it does and how to use it. Use it when you forget syntax.
ls --help
usage: ls [-OPTIONS] [file ...] -a: show all -l: long format ...
node --version
v20.10.0 (helpful for "do I have this installed?")
Try it: when stuck, append --help to any tool name
⌨️
Three keyboard tricks that save you time

Tab autocompletes filenames and folders — start typing, hit Tab. ↑ arrow brings back your previous command. Ctrl+C cancels whatever's currently running (use it any time you feel stuck).

That's it for the essentials

Six commands. Memorize them, use them five times in your real terminal, and you've cleared the biggest hurdle. You don't need more right now — the rest of the terminal is just chains and combinations of stuff like this.

Concept 04

Reading Terminal Output

Half of "knowing the terminal" is reading what comes back. Errors look scary; most of them have only a few flavors. Once you can name the flavor, you can fix it.

The prompt — your home base

The terminal shows a prompt when it's ready for a new command. It usually looks like one of:

The bit before the % or $ tells you context: your username, your machine name, and where you are in the file system (~ = home). The cursor blinks after the prompt — that's where your typing goes.

Exit codes — the silent verdict

Every command returns an exit code when it finishes. You don't see it directly, but it determines the "vibe" of the next prompt:

If you ever want to see the exit code, run echo $? right after a command — it prints the number.

The 4 errors you'll see 90% of the time

Memorize these. Each one tells you exactly what's wrong:

🧭
When in doubt, paste the error into Claude

Errors that look terrifying are almost always boring. Copy the entire error message (it's just text) into Claude Desktop or Claude Code with the question "what does this mean and how do I fix it?" You'll have an answer in seconds. This works embarrassingly well.

Things that look like errors but aren't

The mental shift

The terminal isn't trying to be cryptic. It's just terse. Every error message is short, factual, and a clue. The faster you stop seeing them as failures and start seeing them as diagnostic information, the faster the terminal becomes friendly.

Concept 05

Package Managers & Homebrew

A package manager is an "App Store for command-line tools." Once you have one installed, getting any developer tool is a single line. On Mac, the de facto package manager is Homebrew. This is the most important install you'll do all year.

What's a package manager?

You're used to installing apps from the Mac App Store or by dragging a .dmg into your Applications folder. Command-line tools work differently — they live in special system folders, and you usually install them via a single terminal command.

A package manager is a program that handles installing, updating, and removing command-line tools for you. It knows where they should live, sorts out the dependencies (when tool A needs tool B), and keeps a clean record of what's on your machine.

You'll hear about a few:

Different languages, same idea: "install this for me."

🍺
Homebrew is the gateway drug

Almost every modern dev tool you'd want — Node, Python, Git, Ripgrep, jq, gh, claude, you name it — installs via Homebrew with one line. Setting up Homebrew is a one-time tax. After that, every future tool is a one-line install.

Install Homebrew (5 minutes)

Open the terminal. Paste this command. Hit Enter:

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

It'll ask for your Mac password (the one you use to log in). Type it — the cursor won't move as you type, that's normal. Press Enter.

Wait 3–5 minutes. When it's done, it prints two "Next steps" commands at the very bottom of the output. Run those two commands — they finish setting things up so your terminal knows where Homebrew lives. Copy/paste exactly what's on your screen.

Verify Homebrew works

Run:

brew --version

If you see a version number (e.g., Homebrew 4.4.0), you're good. If you see command not found: brew, the "Next steps" commands didn't run. Scroll back up in your terminal, find those two lines, paste them in, and try again.

🛠 Hands-on: install your first tool

Now that you've got Homebrew, let's install something fun and actually useful. Tree is a tool that visualizes folder structures — way nicer than ls.

brew install tree

Takes about 5 seconds. Then try it:

cd ~ tree -L 2

You'll see your home folder structure as a beautiful indented tree. Congrats — you just used a package manager, installed a tool, and ran it. That's the loop you'll repeat hundreds of times.

The two other Homebrew commands worth knowing

🚀 Where to go from here

You now have a terminal, six commands, the ability to read what comes back, and a package manager. That's the entire foundation. The next module — MCP Basics — assumes everything in this module and shows you how to wire up Claude to your tools.

Other places to go from here:

You don't need any of these today. But now you know how.

Knowledge Check

Test Yourself

Five quick questions. Click an answer to see if you've got it.

1. You type pwd and hit Enter. What does the terminal print?
2. You run a command and see zsh: command not found: tree. What does this mean?
3. What does a package manager like Homebrew actually do?
4. A command is running and seems stuck or you ran it by accident. What's the safest way to stop it?
5. You're drafting an outreach email for a candidate. Which tool is the better fit?