3부 · 터미널과 친해지기
← 이전: 파일·폴더·경로 · 목차 · 다음: 프로그램은 어떻게 도는가 →
드디어 터미널입니다. 많은 입문자가 "검은 창에 글자만 뜨는 그것"을 무서워하지만, 터미널은 그냥 탐색기를 글자로 조작하는 도구일 뿐입니다. 2부에서 마우스로 한 일(폴더 열기, 이동하기)을 여기서는 명령어로 합니다. 한 번 손에 익으면 마우스보다 빠르고, 무엇보다 개발 도구 대부분이 터미널을 전제로 만들어져 있습니다.
3.1 터미널이란 무엇인가
터미널(terminal)은 컴퓨터에게 글자로 명령을 내리는 창입니다. 우리가 명령을 한 줄 입력하면, 그 명령을 해석해 실제로 실행해 주는 프로그램을 셸(shell)이라고 합니다. 엄밀히는 터미널(창)과 셸(해석기)이 다른 것이지만, 입문 단계에서는 "명령 입력하는 그 검은 창"으로 묶어서 생각해도 됩니다.
flowchart LR
A["나"] -->|"명령 입력<br/>예: 폴더 목록 보여줘"| B["셸<br/>(명령 해석기)"]
B -->|OS에 전달| C["운영체제"]
C -->|실행 결과| B
B -->|화면에 출력| A
classDef person fill:#FFF3B0,stroke:#C9A227,color:#000
classDef shell fill:#CDE7FF,stroke:#3B82C4,color:#000
classDef os fill:#E6D6FF,stroke:#7C4DBC,color:#000
class A person
class B shell
class C os
콜아웃 · 어떤 터미널/셸을 쓰나 (OS별)
- Windows: 기본은 PowerShell입니다. 시작 메뉴에서 "PowerShell"을 검색해 여세요. (옛 "명령 프롬프트/cmd"도 있지만, 이 가이드는 PowerShell 기준입니다.) 더 좋은 경험을 원하면 "Windows Terminal" 앱을 권합니다.
- macOS: "터미널"(Terminal) 앱. 기본 셸은 zsh입니다.
- Linux: 배포판마다 다르지만 보통
Ctrl+Alt+T로 열리고, 기본 셸은 bash인 경우가 많습니다.
셸이 다르면 명령어가 살짝 다릅니다. 아래 표에서 PowerShell과 mac/Linux(bash/zsh)를 나란히 적어둡니다.
3.2 프롬프트 읽는 법
터미널을 열면 이런 줄이 깜빡입니다.
PS C:\Users\나의계정>
이 줄을 프롬프트(prompt)라고 합니다. "명령을 기다리는 중"이라는 신호이고, 동시에 지금 내가 서 있는 위치(cwd)를 보여줍니다. 위 예에서 C:\Users\나의계정이 현재 작업 디렉터리입니다. 앞의 PS는 PowerShell이라는 표시입니다.
mac/Linux에서는 보통 이렇게 끝에 $가 붙습니다.
나의계정@맥북 ~ %
여기서 ~는 2부에서 배운 홈 폴더입니다. 프롬프트는 셸 설정에 따라 모양이 다르지만, "기다리는 중 + 지금 위치"라는 의미는 같습니다.
이 가이드에서 명령 예시 앞의PS C:\...>나$는 프롬프트 표시일 뿐, 따라 입력하는 게 아닙니다. 그 뒤의 명령만 입력하세요.
3.3 가장 먼저 익힐 명령 다섯 개
탐색기로 하던 일을 명령으로 바꿔봅니다. 아래 다섯 개면 일단 살아남습니다.
① 지금 어디 있지? — 현재 위치 확인
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
pwd | pwd | 현재 작업 디렉터리(절대경로)를 출력 |
PS C:\Users\나의계정> pwd Path ---- C:\Users\나의계정
pwd는 "print working directory"의 약자입니다. 길을 잃었을 때 가장 먼저 치는 명령입니다.
② 여기 뭐가 있지? — 폴더 안 목록 보기
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
ls (또는 dir) | ls | 현재 폴더 안의 파일·폴더 목록 |
PS C:\Users\나의계정> ls
디렉터리: C:\Users\나의계정
Mode 이름
---- ----
d---- Documents
d---- Downloads
d로 시작하면 디렉터리(폴더)라는 뜻입니다.
③ 저기로 이동 — 폴더 옮겨 다니기
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
cd 폴더이름 | cd 폴더이름 | 그 폴더 안으로 들어가기 |
cd .. | cd .. | 한 칸 위로 올라가기 |
cd ~ | cd ~ | 홈 폴더로 (PowerShell도 ~ 지원) |
cd는 "change directory"입니다. 2부의 ..가 여기서 쓰입니다.
PS C:\Users\나의계정> cd Documents PS C:\Users\나의계정\Documents> cd rag-project PS C:\Users\나의계정\Documents\rag-project>
프롬프트의 위치가 명령을 칠 때마다 바뀌는 게 보이죠. 이게 cwd가 움직이는 모습입니다. 폴더 이름에 띄어쓰기가 있으면 따옴표로 감싸세요: cd "my project".
④ 폴더·파일 만들기
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
mkdir data | mkdir data | data 폴더 새로 만들기 |
New-Item app.py | touch app.py | 빈 파일 app.py 만들기 |
mkdir은 "make directory"입니다. 빈 파일 만들기는 OS별로 명령이 다릅니다.
⑤ 화면 비우기 / 이전 명령 다시 쓰기
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
cls (또는 clear) | clear | 화면을 깨끗이 |
↑ 화살표 | ↑ 화살표 | 직전에 친 명령을 다시 불러오기 |
↑(위 화살표)는 입문자의 가장 친한 친구입니다. 방금 친 긴 명령을 다시 칠 필요 없이 화살표 한 번이면 됩니다.
⑥ 파일 내용 들여다보기
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
cat 파일 (또는 type 파일) | cat 파일 | 파일 내용을 화면에 통째로 출력 |
cat 파일 -Head 10 | head 파일 | 앞부분만 보기 |
코드를 실행하지 않고 "이 파일에 뭐가 들었지?"를 빠르게 확인할 때 씁니다. 단, PDF 같은 바이너리 파일에 cat을 쓰면 깨진 글자가 쏟아지니 텍스트 파일(.txt, .py, .md 등)에만 쓰세요.
⑦ 복사·이동·삭제
| PowerShell | mac/Linux | 하는 일 |
|---|---|---|
copy 원본 대상 | cp 원본 대상 | 파일 복사 |
move 원본 대상 | mv 원본 대상 | 파일 이동 / 이름 바꾸기 |
del 파일 | rm 파일 | 파일 삭제 |
mv(이동)는 같은 폴더 안에서 쓰면 이름 바꾸기가 됩니다. 삭제는 다음 콜아웃을 꼭 읽고 쓰세요.
콜아웃 · ⚠️ 터미널 삭제에는 휴지통이 없다
탐색기에서 파일을 지우면 휴지통으로 가지만, 터미널의rm/del은 보통 곧바로 영구 삭제됩니다. 되돌리기 어렵습니다. 특히 mac/Linux의rm -r 폴더(폴더 통째로 삭제)와rm -rf는 강력해서, 경로를 한 글자 잘못 적으면 엉뚱한 걸 날립니다. 규칙 세 가지: ① 지우기 전에ls로 지금 위치와 대상을 꼭 확인한다, ② 출처를 모르는 인터넷의rm -rf ...명령을 복붙하지 않는다, ③ 중요한 작업은 5부에서 배울 Git으로 백업해 둔다.
3.4 두 가지 시간 절약 습관: 탭 자동완성과 명령 잇기
Tab 키 자동완성. 파일·폴더 이름을 다 칠 필요 없습니다. 앞 글자 몇 개만 치고 Tab을 누르면 셸이 나머지를 채워줍니다. 예를 들어 cd Doc까지 치고 Tab을 누르면 cd Documents로 완성됩니다. 오타를 줄이고(2.7의 대소문자 함정도 예방) 속도를 크게 높여주는, 터미널의 핵심 습관입니다.
명령 잇기. 명령을 연달아 실행하고 싶을 때 기호로 이을 수 있습니다.
# 앞 명령이 성공하면(종료코드 0이면) 다음 실행 — Windows/mac/Linux 공통 cd rag-project && python app.py
&&는 "앞이 성공해야 뒤를 실행"이라는 뜻입니다(4부의 종료코드와 이어집니다). RAG 안내서에서 "이 폴더로 가서 이걸 실행하세요" 같은 두 단계를 한 줄로 묶을 때 자주 보게 됩니다.
3.5 명령의 생김새: 명령어 + 옵션 + 대상
명령은 보통 세 부분으로 이뤄집니다.
ls -l Documents │ │ │ │ │ └─ 대상(인자, argument): 어디에/무엇에 │ └───── 옵션(플래그, flag): 어떻게 └───────── 명령어(command): 무엇을
ls(목록 보기)에 -l(자세히)이라는 옵션을 붙이고, Documents라는 대상을 줬습니다. 옵션은 보통 - 한 개나 -- 두 개로 시작합니다(-l, --help처럼). 막혔을 때 명령어 --help를 치면 그 명령의 사용법이 나옵니다(PowerShell은 Get-Help 명령어).
이명령어 + 옵션 + 대상구조는git,pip,python등 앞으로 만날 거의 모든 명령에 똑같이 적용됩니다. 예:pip install requests는 명령어pip+ 하위명령install+ 대상requests입니다. 새 명령을 만나도 이 틀로 분해하면 덜 낯섭니다.
3.6 알아두면 좋은 셋: 출력 저장·여러 파일 한 번에·내용 검색
당장 외울 필요는 없지만, RAG 코드를 돌리다 보면 종종 보게 되는 기호와 명령입니다. "이런 게 있다"만 알아둬도 막힘이 줄어듭니다.
출력을 파일로 저장하기(>). 화면에 나오는 출력을 파일로 빼돌릴 수 있습니다. 이를 리디렉션(redirection)이라고 합니다.
# python app.py의 출력을 result.txt 파일로 저장 (화면 대신 파일로) python app.py > result.txt
>는 "왼쪽의 출력을 오른쪽 파일에 덮어쓰기", >>는 "이어 붙이기"입니다. 긴 출력이나 오류 로그를 파일로 남겨 6부에서 천천히 읽을 때 유용합니다.
여러 파일을 한 번에(*). 별표는 "아무 글자나"를 뜻하는 와일드카드(wildcard)입니다.
ls data\*.pdf # data 폴더의 .pdf 파일만 골라 보기 del *.tmp # 확장자가 .tmp인 파일 전부 삭제 (주의!)
*.pdf는 "이름이 무엇이든 .pdf로 끝나는 것 전부"입니다. RAG에서 "data 폴더의 PDF를 전부 읽어라" 같은 작업의 감각이 여기서 옵니다. 단, *를 삭제와 함께 쓸 땐 3.3의 삭제 경고를 두 배로 조심하세요.
파일 안에서 글자 찾기. 파일 내용 중 특정 단어가 든 줄을 찾아줍니다.
# PowerShell Select-String "오류" log.txt # mac/Linux (이름이 grep, 아주 유명합니다) grep "오류" log.txt
이건 RAG에서 다룰 키워드 검색의 가장 원시적인 형태입니다. "이 단어가 들어간 줄을 찾아라"는 정확히 일치하는 글자를 찾는 것이고, RAG의 의미 기반 검색(임베딩)은 "글자가 달라도 뜻이 비슷한 것을 찾는" 한 단계 위의 일입니다. 둘의 차이를 미리 느껴두면 나중에 "하이브리드 검색"(키워드+의미)이 왜 나오는지 이해하기 쉽습니다.
3.7 터미널에서 길 잃지 않는 법
터미널의 가장 큰 공포는 "내가 지금 어디 있는지 모르겠다"입니다. 두 가지 습관이면 해결됩니다.
flowchart TB
A["뭔가 이상하다 /<br/>명령이 안 먹는다"] --> B{"지금 어디?"}
B -->|pwd| C["현재 위치 확인"]
C --> D{"여기 맞나?"}
D -->|아니오| E["cd 로 이동"]
D -->|예| F{"여기 뭐 있지?"}
F -->|ls| G["파일 목록 확인"]
G --> H["원하는 파일이<br/>보이는지 확인 후 실행"]
E --> F
classDef q fill:#FFF3B0,stroke:#C9A227,color:#000
classDef act fill:#CDE7FF,stroke:#3B82C4,color:#000
classDef good fill:#D7F2C8,stroke:#5BA63B,color:#000
class A,B,D,F q
class C,E,G act
class H good
요약하면: 막히면 pwd로 위치 확인 → ls로 내용 확인 → 필요하면 cd로 이동. 이 세 박자가 터미널 생존의 기본입니다.
콜아웃 · 탐색기에서 터미널 바로 열기 (편한 지름길)
매번cd로 깊은 폴더까지 들어가는 게 귀찮다면, 탐색기에서 원하는 폴더를 연 뒤 주소 표시줄에powershell을 입력하고 엔터를 치세요. 바로 그 폴더에서 시작하는 터미널이 열립니다. (mac은 폴더 우클릭 → "폴더에서 새로운 터미널 열기", 단축 메뉴에 없으면 시스템 설정에서 켤 수 있습니다.) 5부에서 쓸 코드 에디터는 아예 이걸 내장하고 있습니다.
직접 해보기
2부에서 만든 rag-project 폴더를 터미널로 다시 찾아가 봅니다.
- 터미널을 엽니다. Windows: 시작 메뉴 → "PowerShell" 검색 → 실행.
- 현재 위치를 확인합니다.
pwd를 치세요. 보통 홈(C:\Users\내계정)에서 시작합니다. - 이동합니다.
cd Documents→cd rag-project순서로 들어가세요. 프롬프트가 바뀌는 걸 확인하세요. 만약 "그런 경로 없음" 오류가 나면,ls로 지금 폴더에 뭐가 있는지 보고 철자를 확인하세요. - 내용을 봅니다.
ls로 아까 만든data폴더가 보이는지 확인하세요. - 새 폴더와 파일을 만듭니다.
mkdir notes로 폴더를 만들고,New-Item hello.txt(mac/Linux는touch hello.txt)로 빈 파일을 만든 뒤, 다시ls로 둘 다 생겼는지 확인하세요. - 위로 올라갑니다.
cd ..를 치면rag-project에서Documents로 올라갑니다. 프롬프트로 확인하세요.
- Tab 자동완성을 익힙니다.
cd Doc까지만 치고Tab을 눌러Documents로 완성되는 걸 확인하세요. 한 번 손에 붙으면 다시는 긴 이름을 다 치지 않게 됩니다.
- 파일 내용을 봅니다. 아까 만든
hello.txt에 VS Code나 메모장으로 아무 글자를 적어 저장한 뒤, 터미널에서cat hello.txt(또는type hello.txt)로 내용이 출력되는지 확인하세요.
- 안전하게 지워봅니다. 연습용
hello.txt를 지우기 전에ls로 위치와 대상을 확인하고,del hello.txt(mac/Linux는rm hello.txt)로 지운 뒤 다시ls로 사라졌는지 확인하세요. 3.3의 삭제 콜아웃을 기억하면서요.
여기까지 했다면, 탐색기로 하던 일을 터미널로도 할 수 있게 된 겁니다. 축하합니다 — 이게 입문의 가장 큰 산 중 하나였습니다.
이 챕터 한 줄 정리
터미널은 탐색기를 글자로 조작하는 도구다. pwd(어디?)·ls(뭐 있지?)·cd(이동)·mkdir(폴더 생성)으로 돌아다니고, cat으로 내용을 보며, 삭제는 휴지통이 없으니 조심한다. 막히면 pwd → ls → cd, 그리고 Tab으로 이름을 완성한다.
다음 챕터에서는 이 터미널로 프로그램을 실제로 실행하고, 프로그램이 도는 동안 무슨 일이 벌어지는지(입력·출력·종료코드·환경변수) 봅니다.