동작하는 코드
터미널을 열고 첫 명령어를 입력해봅시다. 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 -a와 ls -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"
터미널 명령어는 대소문자를 구분합니다. LS는 ls와 다릅니다.
실수 2: 공백 주의
# 이건 파일명이 "hello"와 "world.txt" 두 개
ls hello world.txt
# 이건 파일명이 "hello world.txt" 하나
ls "hello world.txt"
파일명에 공백이 있으면 반드시 따옴표로 감싸세요.
실수 3: 명령어를 찾지 못할 때
zsh: command not found: sl
오타거나 해당 프로그램이 설치되지 않은 것입니다. ls를 sl로 쓰지 않았는지 확인하세요.
심화 학습
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/
이 세 가지만 써도 타이핑 양이 절반으로 줄어듭니다.
- 터미널을 열고
echo "나의 첫 명령어"를 입력해보세요. pwd로 현재 위치를 확인하세요.ls로 파일 목록을 확인하고,ls -la로 숨긴 파일까지 확인하세요.echo "안녕하세요" > greeting.txt로 파일을 만들고,cat greeting.txt로 내용을 읽어보세요.ls -l greeting.txt로 방금 만든 파일의 상세 정보를 확인하세요.
Q1. ls -la Documents 명령어에서 각 부분의 역할이 바르게 짝지어진 것은?
- A)
ls=플래그,-la=동사,Documents=인자 - B)
ls=동사,-la=플래그,Documents=인자 - C)
ls=인자,-la=동사,Documents=플래그 - D)
ls=동사,-la=인자,Documents=플래그