Module 03Neill's Vibe · Tier 1 · Basic Vibe Coding~7 min

Two terminals, two dialects

Same black box. Two different languages. Paste the wrong one and a perfectly good command becomes gibberish.

01 · the scene

The command was right. The window was wrong.

A copied-from-the-internet command — the kind every tutorial hands you — pasted straight into the Windows terminal. It should silence the noise. Instead: a parse error. The command isn't broken. It's in the wrong language.

PowerShell — pasted a Bash one-liner
PS C:\app> grep error log.txt 2>/dev/null
grep : The term 'grep' is not recognized as the name of a cmdlet…
At line:1 char:23
(works perfectly in Git Bash. dies in PowerShell.)
Neill51% · the terrain

"I copied the exact command from a guide. It just errored. I assumed I'd done something wrong — but I'd literally pasted what they told me to. How is the same command right in one place and wrong in another?"

Claude49% · the execution

"This one I get wrong myself — I'll hand over a clean Bash one-liner and forget you're in PowerShell, where grep and 2>/dev/null don't exist. It's not your error. It's mine for not checking which shell you're standing in before I gave you syntax for the other one."

02 · the why

One black box. Two languages that look alike — and aren't.

On Windows you'll meet two terminals. PowerShell is the Windows-native one (the default). Git Bash is a Unix-style shell that comes with Git. They do the same kind of thing — run commands — but they speak different dialects. A command fluent in one can be a parse error in the other.

⊞

PowerShell

Windows-native

Get-ChildItem, $env:VAR, backtick escapes, 2>$null. The default on every Windows machine.

$_

Git Bash

POSIX / Unix-style

ls, $VAR, forward slashes, heredocs, 2>/dev/null. What most online tutorials assume.

≠

The mismatch

silent trap

head / tail don't even exist in PowerShell 5.1. Same intent, different words.

Why this matters on day one: copy-pasting a command across shells is one of the most common "why won't this run" traps a beginner hits. The fix isn't more debugging — it's a single question asked first: which shell am I in? That tells you which dialect to use, and turns a baffling parse error into a non-event.

03 · predict it

Copied command. Parse error. Why?

You pasted a command straight from a tutorial into PowerShell and got 'grep' is not recognized. The tutorial author swears it works. What's actually going on?

Not it. The command is fine where it was written. Focus on the difference between the shell the author used and the shell you're standing in.
Exactly. Tutorials usually assume a Unix shell. grep and 2>/dev/null are Bash; in PowerShell you'd use Select-String and 2>$null. The command was never broken — it was in the wrong language for the window.
04 · the walkthrough

Tell which shell you're in — then translate.

read the prompt
step 1The prompt tells you: PS C:\> is PowerShell; a $ with a Unix path is Git Bash. Look before you paste.
ls vs Get-ChildItem
step 2Same job, two words. ls works in both by luck; grep/head/tail are Bash-only.
2>/dev/null vs 2>$null
step 3"Throw away errors" is 2>/dev/null in Bash, 2>$null in PowerShell. Tiny, breaks loudly.
ask the AI to convert
step 4Stuck? Tell the AI which shell you're in and ask it to convert the command. That's the one-line fix.
05 · prove it · gate

Teach it back to unlock the payoff.

Same rule as every module: answer it right, or it isn't done.

A command works on a friend's Mac terminal but errors on your Windows PowerShell. What's the right first move?
// one correct answer unlocks Module 03
Not the load-bearing move. The program isn't broken and admin rights won't teach PowerShell a Bash command. Think about language, not permissions.
That's it. "Works there, errors here" across operating systems is almost always a dialect mismatch, not a broken program. Identify the shell, translate the syntax (or switch to Git Bash). Module unlocked. ↓
the durable idea

Before you debug a command that won't run, ask which shell you're in. "Right command, wrong dialect" is a translation problem, not a bug.

06 · factory payoff
⊘ locked — pass the teach-back to claim this piece of the factory

The Bash ↔ PowerShell translation card.

The side-by-side that ends the parse errors: the dozen commands you'll actually paste, in both dialects, with the gotchas marked (the ones that exist in only one). Keep it open while you follow any tutorial written for the other shell.

✓ Module 03 complete