DaleSchool

터미널과 첫 만남

입문20분

학습 목표

  • 터미널(셸)이 무엇인지 설명할 수 있다
  • 명령어의 구조(동사, 플래그, 인자)를 이해할 수 있다
  • stdin/stdout 개념을 이해할 수 있다
  • 터미널을 열고 첫 명령어를 실행할 수 있다

동작하는 코드

터미널을 열고 첫 명령어를 입력해봅시다. macOS라면 Spotlight(⌘+스페이스)에서 "Terminal"을 검색하거나, 응용 프로그램 → 유틸리티 → 터미널을 실행합니다.

예제 1: 텍스트 출력하기

echo "안녕, 터미널!"

출력:

안녕, 터미널!

echo는 텍스트를 화면에 출력하는 명령어입니다. 가장 간단한 명령어 중 하나입니다.

예제 2: 현재 위치와 파일 목록 확인

pwd

출력 예시:

/Users/dale
ls

출력 예시:

Desktop  Documents  Downloads  Movies  Music  Pictures

예제 3: 명령어에 옵션 더하기

ls -l

출력 예시:

drwx------   5 dale staff   160 Jan 15 10:30 Desktop
drwx------  10 dale staff   320 Jan 14 09:00 Documents
drwx------   3 dale staff    96 Jan 13 15:20 Downloads

-l처럼 -로 시작하는 글자를 플래그(flag) 또는 옵션이라고 합니다. 명령어의 동작 방식을 바꿉니다.

직접 수정하기

명령어의 구조를 이해하면 새 명령어도 쉽게 배울 수 있습니다.

명령어 구조: 동사 + 플래그 + 인자

ls    -la    Documents
↑      ↑        ↑
동사  플래그    인자(대상)
  • 동사(command): 무엇을 할지 (ls, echo, pwd)
  • 플래그(flag/option): 어떻게 할지 (-l, -a, -r)
  • 인자(argument): 무엇에 대해 할지 (Documents, file.txt)

이제 다양한 명령어를 조합해보세요:

# 숨긴 파일 포함 상세 목록
ls -la

# 특정 디렉토리 내용 보기
ls -l Documents

# 메시지를 파일에 저장
echo "첫 번째 파일" > hello.txt

# 파일 내용 읽기
cat hello.txt

플래그를 여러 개 합칠 수도 있습니다. ls -l -als -la는 동일합니다.

"왜?" — 터미널은 왜 쓰는 걸까요?

터미널은 텍스트로 컴퓨터에게 명령을 내리는 인터페이스입니다. GUI(그래픽 인터페이스)로 하면 클릭을 여러 번 해야 하는 작업을 명령어 한 줄로 처리할 수 있습니다.

| 상황 | GUI | 터미널 | | ----------------------- | ------------------------- | -------------- | | 파일 1000개 이름 바꾸기 | 하나씩 클릭 (사실상 불가) | 명령어 한 줄 | | 서버에 접속하기 | GUI 없음 | SSH로 가능 | | 자동화 스크립트 실행 | 불가능 | 즉시 실행 | | 텍스트 검색/치환 | 에디터에서 하나씩 | grep/sed 한 줄 |

프롬프트 구조 이해하기

터미널을 열면 이런 글자가 보입니다:

dale@macbook ~ %
  • dale — 현재 사용자 이름
  • macbook — 컴퓨터 이름
  • ~ — 현재 위치 (~는 홈 디렉토리를 뜻함)
  • % — 명령을 기다리는 표시 (bash는 $, zsh는 %)

stdin과 stdout — 데이터의 흐름

터미널의 핵심 개념입니다:

키보드 → [stdin] → 명령어 → [stdout] → 화면
  • stdin (standard input): 명령어가 데이터를 받는 입력 통로 (기본: 키보드)
  • stdout (standard output): 명령어가 결과를 내보내는 출력 통로 (기본: 화면)

echo "hello"를 입력하면:

  • echo"hello"를 stdin이 아닌 인자로 받아
  • stdout(화면)에 hello를 출력합니다

이 개념이 중요한 이유는 나중에 배울 **파이프(|)**와 **리다이렉션(>)**의 기반이 되기 때문입니다.

흔한 실수

실수 1: 대소문자 구분

# 잘못됨
LS
Echo "hello"

# 올바름
ls
echo "hello"

터미널 명령어는 대소문자를 구분합니다. LSls와 다릅니다.

실수 2: 공백 주의

# 이건 파일명이 "hello"와 "world.txt" 두 개
ls hello world.txt

# 이건 파일명이 "hello world.txt" 하나
ls "hello world.txt"

파일명에 공백이 있으면 반드시 따옴표로 감싸세요.

실수 3: 명령어를 찾지 못할 때

zsh: command not found: sl

오타거나 해당 프로그램이 설치되지 않은 것입니다. lssl로 쓰지 않았는지 확인하세요.

심화 학습

bash와 zsh의 차이는 뭔가요?

**셸(Shell)**은 명령어를 해석하고 실행하는 프로그램입니다. 터미널은 셸을 실행하는 창일 뿐입니다.

  • bash — 오래된 기본 셸. 리눅스 서버에서 많이 씁니다.
  • zsh — macOS Catalina(2019)부터 기본 셸. bash보다 기능이 많습니다.

현재 어떤 셸을 쓰는지 확인:

echo $SHELL

출력:

/bin/zsh

이 강의는 bash와 zsh 모두에서 동작하는 명령어를 사용합니다.

터미널 앱 선택: 기본 터미널 vs iTerm2

맥 기본 터미널 앱과 iTerm2 모두 좋습니다. iTerm2는 다음 기능이 추가로 있습니다:

  • 탭과 분할 화면
  • 더 나은 색상 지원
  • 검색 기능

처음이라면 기본 터미널로 시작하고, 나중에 필요하면 iTerm2로 전환해도 됩니다. 명령어는 동일합니다.

명령어 히스토리와 자동완성

이미 입력한 명령어를 다시 쓰지 않아도 됩니다:

  • / 키 — 이전/다음 명령어
  • Ctrl+R — 히스토리 검색 (입력하면 일치하는 명령어 찾음)
  • Tab — 파일명/명령어 자동완성
# "ls Doc" 입력 후 Tab 누르면:
ls Documents/

이 세 가지만 써도 타이핑 양이 절반으로 줄어듭니다.

  1. 터미널을 열고 echo "나의 첫 명령어"를 입력해보세요.
  2. pwd로 현재 위치를 확인하세요.
  3. ls로 파일 목록을 확인하고, ls -la로 숨긴 파일까지 확인하세요.
  4. echo "안녕하세요" > greeting.txt로 파일을 만들고, cat greeting.txt로 내용을 읽어보세요.
  5. ls -l greeting.txt로 방금 만든 파일의 상세 정보를 확인하세요.

Q1. ls -la Documents 명령어에서 각 부분의 역할이 바르게 짝지어진 것은?

  • A) ls=플래그, -la=동사, Documents=인자
  • B) ls=동사, -la=플래그, Documents=인자
  • C) ls=인자, -la=동사, Documents=플래그
  • D) ls=동사, -la=인자, Documents=플래그