# 터미널과 명령어

> **이 장에서 배우는 것**
> 터미널이 무엇이고 왜 아직 쓰는지, 명령 한 줄을 읽는 법, 그리고 설치에서
> 막히는 사람의 대부분이 만나는 `command not found` 의 정체.

## 검은 창의 정체

터미널은 **컴퓨터에 글자로 명령하는 창**입니다. 마우스로 아이콘을 누르는 것과
하는 일은 같습니다. 방식만 다릅니다.

| | 화면(GUI) | 터미널(CLI) |
|---|---|---|
| 지시 | 누른다 | 적는다 |
| 배우기 | 쉬움 | 이름을 알아야 함 |
| **반복** | 매번 똑같이 눌러야 함 | **한 줄을 저장해 두면 끝** |
| **남기기** | 무엇을 했는지 안 남음 | **그대로 복사해 전달 가능** |

**아직 쓰는 이유는 아래 두 줄입니다.** 자동화와 재현 — 화면으로 한 일은 남에게
"거기서 그거 누르세요"라고 밖에 전할 수 없지만, 명령은 그대로 붙여넣으면
같은 일이 일어납니다. 이 매뉴얼이 설치 안내를 명령 한 줄로 주는 이유입니다.

## 여는 법

| 운영체제 | 프로그램 |
|---|---|
| macOS | **터미널**(Terminal) — Spotlight에서 "터미널" |
| Windows | **PowerShell** — 시작 메뉴에서 "PowerShell" |
| Linux | 터미널 |

열면 이런 줄이 깜빡입니다. 여기에 적으라는 뜻입니다.

```
jinho@macbook ~ %
```

`~` 는 **내 홈 폴더**를 뜻하는 약자입니다. 즉 "지금 홈 폴더에 있다"는 표시입니다.

## 명령 한 줄의 구조

```
claude --version
└──┬─┘ └───┬───┘
 명령      옵션
```

```
node scripts/deck-pdf.mjs deck.pdf
└─┬┘ └────────┬─────────┘ └──┬───┘
 명령        인자          인자
```

**띄어쓰기가 구분자입니다.** 그래서 폴더 이름에 공백이 있으면 따옴표로 묶어야
합니다 — 앞 장에서 "공백보다 하이픈"이라고 한 이유입니다.

```bash
cd "내 문서/작업 폴더"
```

## 알아둘 것은 다섯 개뿐입니다

이 매뉴얼을 읽는 데 필요한 것만 추리면 이렇습니다.

| 명령 | 하는 일 |
|---|---|
| `cd <폴더>` | 그 폴더로 이동 |
| `ls` (Windows `dir`) | 지금 폴더의 파일 목록 |
| `pwd` | 지금 어느 폴더인지 |
| `<명령> --version` | 설치됐는지 · 버전 확인 |
| **`Ctrl-C`** | **지금 도는 것을 멈춤** |

`Ctrl-C` 는 명령이 아니라 키입니다. 무언가 계속 돌면서 안 끝날 때 빠져나오는
비상구라, 다섯 개 중 가장 자주 씁니다.

> **터미널에서 붙여넣기는 `Ctrl-V` 가 아닐 수 있습니다.** macOS는 `⌘V`,
> Windows PowerShell은 마우스 오른쪽 버튼이나 `Ctrl-Shift-V` 입니다.

## `command not found` — 설치에서 막히는 이유의 대부분

이 한 줄이 [준비물](/guide/ht-prerequisites)에서 가장 많이 나오는 실패입니다.

```
zsh: command not found: claude
```

뜻은 "그런 명령을 **찾지 못했다**"입니다. **설치가 안 된 것과 못 찾는 것은
다릅니다.** 터미널은 명령을 아무 데서나 찾지 않고, 미리 정해진 폴더 목록만
뒤집니다. 그 목록을 **PATH** 라고 합니다.

```mermaid
graph TD
  A["claude 라고 입력"] --> B["PATH에 적힌 폴더들을 차례로 뒤짐"]
  B -->|"찾음"| C["실행"]
  B -->|"못 찾음"| D["command not found"]
```

설치 프로그램은 대개 이 PATH를 고칩니다. 그런데 **이미 열려 있던 터미널은 그
변경을 모릅니다** — 창을 열 때 읽은 목록을 그대로 쓰기 때문입니다.

```
✓ 새 터미널 창을 연다        → 십중팔구 해결
✓ 그래도 안 되면 재부팅
✗ 같은 창에서 계속 다시 친다  → 몇 번을 쳐도 같습니다
```

## 위험한 명령을 알아보는 법

터미널은 "정말 지울까요?"를 잘 묻지 않습니다. 인터넷에서 주워온 명령을 붙여넣기
전에 이 세 가지만 보세요.

```
□ rm  · del      — 지웁니다. 휴지통을 거치지 않습니다
□ sudo           — 관리자 권한으로 실행합니다
□ curl … | bash  — 받아온 것을 바로 실행합니다 (공식 배포처인지 확인)
```

**무슨 일을 하는지 모르는 명령은 붙여넣기 전에 물어보세요.** 에이전트에게 "이
명령이 무슨 일을 하는지 설명해줘"라고 먼저 시키는 것도 좋은 습관입니다.

## 자주 하는 오해

### "터미널을 쓰면 컴퓨터가 망가지지 않나요"

**보통 명령은 안전합니다.** 위험한 것은 위의 세 가지처럼 지우거나 권한을
올리는 명령이고, 그건 화면에서도 똑같이 위험합니다. 차이는 확인 대화상자가
없다는 것뿐입니다.

### "명령을 다 외워야 하나요"

**아니요.** 위의 다섯 개면 이 매뉴얼은 끝까지 읽힙니다. 나머지는 필요할 때
찾아 쓰는 것이고, [명령어 레퍼런스](/guide/ht-cli) 같은 문서가 그래서
있습니다.

---

## 확인

**1. `command not found` 는 설치가 안 됐다는 뜻입니까?**

<details>
<summary>답</summary>

**꼭 그렇지는 않습니다.** "찾지 못했다"는 뜻이고, 설치는 됐는데 PATH를 아직 못
읽은 경우가 대부분입니다. 새 터미널 창을 여는 것이 첫 조치입니다.
</details>

**2. 도는 명령을 멈추는 키는?**

<details>
<summary>답</summary>

**`Ctrl-C`** 입니다.
</details>

**3. 폴더 이름에 공백이 있으면 왜 따옴표가 필요합니까?**

<details>
<summary>답</summary>

**터미널이 띄어쓰기로 명령과 인자를 나누기 때문**입니다. 묶지 않으면 두 개의
인자로 읽힙니다.
</details>

---

다음은 그 명령들이 실행하는 것의 정체입니다 →
[프로그램과 언어 — 파이썬 · 자바스크립트 · Node](/guide/it-programs)
