Programming글자 수 5558읽는 시간14

터미널 명령줄 입문: ls, cd, mkdir부터 Bash, Git 및 AI 도구 배포까지

처음 접하는 사용자를 위한 터미널 명령줄 입문 가이드로, Terminal, Shell, Bash, Zsh, 경로, ls, cd, mkdir, git clone, npm run dev 같은 기본 개념을 설명합니다.

많은 사람이 터미널 명령줄을 처음 접하면 이를 일종의 “해커 창”처럼 느끼기 쉽습니다. 버튼도, 아이콘도 없이 한 줄씩 영어 명령어만 보이기 때문입니다. 특히 GitHub, Vercel, Node.js, Python, Claude Code, Codex 같은 AI Agent 프로젝트를 다룰 때, 튜토리얼에 ls, cd, mkdir, git clone, npm install, npm run dev 같은 명령이 자주 등장하면 초보자는 쉽게 지쳐버리기 쉽습니다.

하지만 명령줄은 그리 신비하지 않습니다. 본질적으로는 컴퓨터를 조작하는 또 다른 방식일 뿐입니다. 평소에 마우스로 폴더를 클릭하고 파일을 만들고 이동하며 프로젝트를 여는 방식이 있다면, 명령줄은 텍스트 명령으로 같은 작업을 수행합니다.

이 글에서는 터미널, Shell, Bash, Zsh, 경로, 자주 쓰는 명령어, 그리고 GitHub, Vercel, Python, Node.js, AI 도구 배포와의 관계를 가능한 한 쉽게 설명합니다. 이런 개념을 이해하면 오픈 소스 프로젝트 안내서, 배포 가이드, AI 도구 문서를 볼 때 훨씬 덜 어렵고 빠르게 이해할 수 있습니다.

1. 터미널, Shell, Bash, Zsh는 각각 무엇인가요?

명령줄을 배우기 전에, 섞이기 쉬운 개념을 먼저 분리해 보는 게 좋습니다.

이름어떻게 이해하면 좋을까설명
Terminal / 터미널명령을 입력하는 창Mac, Linux, Windows에서 여는 명령줄 인터페이스
Shell명령을 해석하는 프로그램사용자가 입력한 명령을 이해해 시스템에 실행을 맡김
Bash흔히 쓰이는 Shell많은 Linux 튜토리얼에서 기본으로 가정됨
Zsh또 다른 Shell현재 macOS에서 더 일반적인 기본 Shell은 Zsh
PowerShellWindows에서 흔한 ShellWindows에서의 현대적인 명령줄 환경 중 하나
Git BashWindows에서 Unix 계열 명령을 흉내 내는 환경Git for Windows 설치 시 자주 사용되며, GitHub 튜토리얼의 많은 명령 실행에 유리

간단히 정리하면:

터미널에서 명령을 입력하면, Shell이 그 명령을 해석하고 운영체제가 실행합니다.

그래서 많은 튜토리얼에서 “Bash를 열고 명령을 실행하라”고 하면 초보자 기준으로는 이렇게 이해하면 됩니다.

터미널을 열고, 그 안에서 명령을 입력한다.

운영체제가 달라지면 명령줄 환경도 조금 다릅니다. Mac과 Linux 튜토리얼에 자주 나오는 ls, cd, mkdir, rm 같은 명령은 Windows PowerShell에서는 완전히 동일하지 않을 수 있습니다. 하지만 Git Bash, WSL, 또는 Unix 계열 환경을 쓰면 보통 Mac/Linux 튜토리얼과 훨씬 가깝습니다.

2. Bash는 무엇이고, 왜 자주 언급되나요?

Bash는 Bourne Again Shell의 줄임말로, 매우 널리 쓰이는 명령어 해석기입니다. 많은 Linux 서버, 배포 가이드, 오픈 소스 프로젝트의 README에서 Bash 또는 Bash류 Shell 문법을 기본으로 사용합니다.

튜토리얼에서 보게 되는 이런 작성 방식은 Bash 관습과 깊이 관련이 있습니다.

cd my-project && npm install
export OPENAI_API_KEY="your_api_key"
python main.py --input data.txt

Bash의 역할은 “코드를 복잡하게 작성하는 것”이 아니라, 여러 시스템 작업을 연결해 자동으로 실행하는 데 있습니다. 예를 들어 프로젝트 폴더로 이동하고, 의존성을 설치하고, 환경 변수를 설정하고, 스크립트를 실행하고, 로그를 확인하고, 배포를 진행합니다.

초보자 입장에서는 Bash 스크립트를 처음부터 체계적으로 공부할 필요가 없습니다. 우선 아래 항목만 익히면 충분합니다.

  • 디렉터리 이동하기
  • 파일 조회하기
  • 파일 생성, 복사, 이동, 삭제
  • 프로그램 실행하기
  • 인자와 옵션 이해하기
  • &&, |, >, >> 같은 기호 해석하기
  • 명령이 위험한지 판단하기

이 기본을 익힌 뒤 변수를 배우고, 반복문, 조건문, 스크립트 파일까지 확장하면 충분합니다.

3. 명령줄의 기본 구조

완전한 한 줄 명령은 보통 세 부분으로 구성됩니다.

command [options] [arguments]

예를 들어:

ls -la ~

이렇게 분해할 수 있습니다.

부분예시의미
명령 Commandls어떤 작업을 수행할지
옵션 Options-la명령의 동작을 수정
인자 Arguments~명령이 적용되는 대상

다른 예시:

mkdir -p images/icons

의미는: images/icons 폴더 경로를 만들고, 중간 폴더인 images가 없으면 함께 생성한다는 뜻입니다.

초보자가 명령줄을 두려워하는 이유는 전체 줄을 하나의 긴 영어 문장으로 봐버리기 때문입니다. 실제로는 분해해 보면 대부분 읽을 수 있습니다.

python main.py --input data.txt --output result.md

이 명령은 이렇게 해석할 수 있습니다.

  • python: Python으로 프로그램 실행
  • main.py: 실행할 스크립트 파일
  • --input data.txt: 입력 파일은 data.txt
  • --output result.md: 출력 파일은 result.md

4. 경로: 명령줄의 “주소”

경로는 컴퓨터에서 파일이나 폴더가 있는 위치입니다.

예를 들어 Mac에서:

~/GitHub/LamjinlabWebsite

이건 다음과 같은 폴더 주소와 같습니다.

사용자 홈 디렉터리 ~
└── GitHub
    └── LamjinlabWebsite

자주 쓰는 경로 기호는 다음과 같습니다.

기호의미예시
/경로 구분자, 또는 루트 디렉터리 표시/Users/yourname
~현재 사용자의 홈 디렉터리~/Desktop
.현재 디렉터리./package.json
..상위 디렉터리cd ..

예를 들어:

cd ..

의미: 한 단계 위 폴더로 이동.

또는:

cd ~/GitHub/LamjinlabWebsite

의미: 홈 디렉터리 아래 GitHub/LamjinlabWebsite 폴더로 이동.

경로에 공백이 있으면 따옴표로 감싸는 것이 좋습니다.

cd "My Projects"

또는 역슬래시로 공백을 이스케이프합니다.

cd My\ Projects

초보자에게는 따옴표 방식이 더 직관적이고 실수도 적습니다.

5. 기본 명령어 모음

아래 명령어들은 초보자가 우선 익혀야 할 핵심입니다.

1. pwd: 현재 위치 확인

pwd는 print working directory의 약자로, 현재 작업 중인 디렉터리를 출력합니다.

pwd

예시 출력:

/Users/yourname/GitHub/LamjinlabWebsite

지금 내가 어느 폴더에 있는지 모를 때 먼저 pwd를 씁니다.

2. ls: 파일과 폴더 나열

ls는 list의 약자로, 현재 디렉터리의 내용을 나열합니다.

ls

자주 쓰는 형식:

ls -l

상세 정보 표시.

ls -a

숨김 파일 표시.

ls -la

상세 정보와 숨김 파일을 함께 표시.

숨김 파일은 보통 .으로 시작합니다. 예:

.env
.gitignore
.DS_Store

이 중 .env, .env.local은 API Key, 데이터베이스 주소 같은 민감 설정을 담는 경우가 많으므로 GitHub에 임의로 올리면 안 됩니다.

3. cd: 디렉터리 전환

cd는 change directory의 약자로, 다른 폴더로 이동합니다.

cd Desktop

바탕화면 디렉터리로 이동.

cd ..

상위 디렉터리로 이동.

cd ~

현재 사용자 홈 디렉터리로 이동.

cd -

이전에 있던 디렉터리로 다시 이동.

프로젝트 사이를 왔다 갔다 할 때 특히 편리합니다.

4. mkdir: 폴더 생성

mkdir은 make directory의 약자로, 폴더를 생성합니다.

mkdir images

images라는 폴더 생성.

더 흔하고 안전한 방식은:

mkdir -p images/icons

-p는 중간 경로가 없으면 자동 생성하고, 폴더가 이미 있어도 에러를 내지 않습니다.

예:

mkdir -p ~/ai-agent-workflow-ppt/images

의미는 이 경로를 생성하는 것입니다.

~/ai-agent-workflow-ppt/images

ai-agent-workflow-ppt가 없으면 함께 생성합니다.

5. touch: 빈 파일 생성

touch는 보통 빈 파일을 만드는 데 씁니다.

touch README.md

README.md 파일을 생성합니다.

웹 프로젝트에서 이런 명령을 볼 수 있습니다.

touch .env.local

보통 로컬 환경 변수 파일을 만들 때 쓰며, API Key, DB 주소 같은 설정을 저장할 때 사용합니다.

6. cat, less, head, tail: 파일 내용 보기

cat은 텍스트 파일 내용을 빠르게 확인할 때 씁니다.

cat README.md

짧은 파일이라면 cat이 편하고, 길다면 less를 페이지 단위로 봅니다.

less README.md

자주 쓰는 조작: 공백 바(스페이스)로 넘기고, q로 종료.

파일 앞부분만 보고 싶다면:

head README.md

끝부분만 보고 싶다면:

tail README.md

로그 확인에서 tail이 자주 쓰입니다.

tail -f app.log

-f는 파일 변경을 실시간 추적해 실행 중인 프로그램 로그를 보는 데 쓰입니다.

7. cp: 파일 또는 폴더 복사

cp는 copy, 즉 복사입니다.

파일 복사:

cp a.txt b.txt

폴더 복사에는 보통 -r을 붙입니다.

cp -r images images-backup

-r은 재귀 복사로, 폴더 내부의 모든 내용을 함께 복사합니다.

8. mv: 이동 또는 이름 변경

mv는 move, 즉 이동입니다.

이름 변경:

mv old.md new.md

파일 이동:

mv article.md content/posts/ai/

그래서 mv는 주로 두 가지 용도로 씁니다. 파일 이동과 이름 변경입니다.

9. rm: 파일 또는 폴더 삭제

rm은 remove의 약자로 삭제합니다.

파일 삭제:

rm test.txt

폴더 삭제:

rm -r test-folder

초보자는 특히 아래 명령을 조심해야 합니다.

rm -rf some-folder

-r은 재귀 삭제, -f는 강제 삭제입니다. 이 명령은 GUI처럼 휴지통에 넣지 않고 즉시 삭제하므로 실행 전 경로를 꼭 확인해야 합니다.

10. echo: 문자열 출력

echo는 문자열을 출력하는 명령으로, 자주 > 또는 >>와 함께 파일에 쓰기에서 사용합니다.

echo "hello"

출력:

hello

파일 쓰기:

echo "hello" > test.txt

hellotest.txt에 씁니다.

6. 자주 쓰는 상호작용 팁

1. Tab 자동 완성

명령어나 파일명 일부를 입력한 뒤 Tab을 누르면 터미널이 자동으로 완성해 줍니다.

예를 들어 현재 디렉터리에 다음 폴더가 있다면:

LamjinlabWebsite

cd Lam을 입력하고

cd Lam

Tab을 누르면 다음처럼 자동 완성될 수 있습니다.

cd LamjinlabWebsite

2. 위아래 화살표로 이력 조회

는 이전 명령으로, 는 다음 명령으로 이동합니다.

반복 실행할 때 매우 유용합니다.

npm run dev

방금 실행했던 명령이라면 만 눌러 다시 불러와 재입력 없이 실행할 수 있습니다.

3. Ctrl + C로 프로그램 중단

어떤 명령이 계속 실행되거나 현재 프로세스를 멈추고 싶을 때 사용합니다.

Ctrl + C

로컬 개발 서버, Python 스크립트, Node.js 프로그램도 이렇게 종료할 수 있습니다.

4. clear로 화면 정리

터미널 출력이 너무 많을 때는:

clear

현재 화면을 비워서 정돈된 상태로 만듭니다.

5. history로 과거 명령 확인

이전에 실행한 명령을 찾고 싶다면:

history

명령 이력을 나열해 줍니다. 초보자는 이 기능으로 방금 어떤 작업을 했는지 복기할 수 있습니다.

7. 자주 쓰는 기호 해설

1. &&: 앞 명령이 성공해야 다음 명령 실행

예:

mkdir -p images && ls

의미: 먼저 images 폴더를 만들고, 성공하면 다음으로 ls를 실행해 현재 디렉터리 내용을 봅니다.

2. ;: 성공 여부와 관계없이 다음 명령 실행

예:

mkdir images; ls

의미: images 생성 시도 후 ls를 실행합니다. 앞 명령이 실패하더라도 다음 명령이 진행될 수 있습니다.

그래서 의존성이 있는 설치·배포 과정에서는 &&의 의미를 이해하는 것이 더 중요합니다. 앞 단계가 성공해야 다음 단계로 넘어가야 하기 때문입니다.

3. |: 파이프라인

파이프는 앞 명령의 출력을 뒤 명령의 입력으로 전달합니다.

예:

ls | grep "mdx"

의미: 현재 디렉터리 목록을 먼저 만든 뒤, 그 결과에서 mdx가 포함된 행만 필터링합니다.

4. >>>: 출력 리다이렉션

>는 출력을 파일에 쓰고 기존 내용을 덮어씁니다.

echo "hello" > test.txt

>>는 출력을 파일 끝에 추가합니다.

echo "world" >> test.txt

초보자는 >가 덮어쓰기 동작을 한다는 점을 항상 주의해야 합니다.

5. *: 와일드카드

*는 여러 글자를 매칭합니다.

예:

ls *.md

현재 디렉터리에서 확장자가 .md로 끝나는 파일을 모두 나열.

또는:

rm *.log

현재 디렉터리의 .log 파일을 모두 삭제합니다. 위험한 명령이므로 실행 전 현재 위치를 꼭 확인하세요.

8. 실제 예제로 명령 이해하기

예를 들어 이런 명령을 보았다면:

mkdir -p ~/ai-agent-workflow-ppt/images && ls ~/ai-agent-workflow-ppt/

두 부분으로 나눠볼 수 있습니다.

mkdir -p ~/ai-agent-workflow-ppt/images

프로젝트의 images 폴더를 생성한다는 뜻입니다.

ls ~/ai-agent-workflow-ppt/

ai-agent-workflow-ppt 폴더 안의 내용을 조회한다는 뜻입니다.

중간의 &&는 다음을 뜻합니다.

앞의 생성 명령이 성공해야 뒤의 조회 명령이 실행된다.

즉 전체 의미는:

먼저 images 폴더를 만들고, 프로젝트 디렉터리 내용을 조회한다.

삭제 동작이 없고 폴더 생성 및 조회만 수행하므로 일반적으로 안전한 조합입니다.

9. 명령줄과 GitHub의 관계

GitHub는 많은 오픈 소스 프로젝트의 호스팅 플랫폼이고, Git은 버전 관리 도구입니다. GitHub의 프로젝트는 보통 Git으로 로컬에 내려받아 작업합니다.

가장 흔한 명령은:

git clone https://github.com/example/project.git

이 명령은 원격 GitHub 저장소를 내 컴퓨터로 복제한다는 뜻입니다.

보통 내려받은 뒤 프로젝트 디렉터리로 이동합니다.

cd project

그리고 프로젝트 파일을 확인합니다.

ls

많은 오픈 소스 README에는 다음처럼 적혀 있습니다.

git clone https://github.com/example/project.git
cd project
npm install
npm run dev

초보자는 한 번에 붙여넣지 말고 단계별로 이해하면서 실행하는 것이 좋습니다.

1. git clone: 프로젝트 다운로드 2. cd project: 프로젝트 폴더로 이동 3. npm install: 의존성 설치 4. npm run dev: 개발 서버 실행

이렇게 하면 각 단계가 무엇을 하는지 알 수 있어, 오류 원인도 빠르게 찾을 수 있습니다.

10. 명령줄과 Node.js, npm의 관계

많은 웹 프로젝트, 프런트엔드, Next.js, Vercel 프로젝트는 Node.js와 npm을 사용합니다.

npm은 Node.js 생태계의 패키지 매니저입니다. 일반적인 용도는 의존성 설치, 스크립트 실행, 개발 서버 시작, 빌드입니다.

자주 쓰는 명령은 다음과 같습니다.

npm install

프로젝트 의존성을 설치합니다. 보통 현재 디렉터리의 package.json을 읽습니다.

npm run dev

package.json에 정의된 dev 스크립트를 실행하며, 보통 로컬 개발 서버를 시작합니다.

npm run build

빌드 스크립트를 실행하며, 보통 배포용 프로덕션 버전을 생성합니다.

npm start

시작 스크립트를 실행합니다. 동작은 프로젝트의 package.json 정의에 따릅니다.

그래서 npm run dev를 볼 때 단순히 외우지 말고 프로젝트의 package.json을 열어 실제 내용을 확인하는 습관이 중요합니다.

{
  "scripts": {
    "dev": "next dev",
    "build": "next build",
    "start": "next start"
  }
}

이렇게 보면:

  • npm run dev는 실제로 next dev를 실행
  • npm run build는 실제로 next build를 실행
  • npm start는 실제로 next start를 실행

이 점을 이해하면 프론트엔드 프로젝트 튜토리얼이 훨씬 명확해집니다.

11. 명령줄과 Python, AI 도구의 관계

웹만 단순히 보면서 작업한다면 명령줄이 거의 필요 없을 수도 있습니다. 하지만 더 많은 AI 도구, 오픈 소스 프로젝트, 자동화 워크플로를 다루려면 거의 필수입니다.

예를 들어:

python main.py

Python 스크립트 실행.

python -m venv .venv

Python 가상 환경 생성.

pip install -r requirements.txt

Python 프로젝트 의존성 설치.

vercel deploy

웹 프로젝트 배포.

claude

설치 방식에 따라 Claude Code 같은 CLI 도구를 시작할 때 쓰입니다.

여러 AI Agent, Claude Code, Codex, Cursor, Next.js, FastAPI, Vercel 프로젝트의 실제 작업은 설치, 실행, 디버깅, 배포 대부분이 명령줄로 처리됩니다.

따라서 명령줄 학습은 “전문가처럼 보이기”가 아니라, 프로젝트를 스스로 통제하기 위한 실질적인 역량입니다.

12. 초보자가 자주 하는 실수

1. 현재 디렉터리를 모름

해결:

pwd

먼저 현재 위치를 확인.

2. 경로 오타

해결: Tab 자동 완성을 자주 사용하고, 긴 경로를 손으로 입력하지 않기.

3. 파일명 대소문자 혼동

일부 시스템에서는 파일명 대소문자가 명령 실행에 영향을 줍니다.

예:

README.md
readme.md

서로 다른 파일로 취급될 수 있습니다.

4. 삭제 명령 오사용

특히:

rm -rf

실행 전 경로를 반드시 확인해야 하며, 모르는 명령을 그대로 복사해 바로 실행하지 마세요.

5. 모르는 명령을 복사해 바로 실행

초보자에게 가장 위험한 습관 중 하나입니다. 어떤 명령도 실행 전 최소한 아래 세 질문을 이해해야 합니다.

  • 삭제 동작이 있는가?
  • 파일을 덮어쓸 수 있는가?
  • 민감한 정보가 외부로 업로드될 가능성이 있는가?

명령어에 rm -rf, sudo, curl ... | bash, chmod 777, >가 들어가면 특히 신중해야 합니다.

6. 에러 메시지 미확인

많은 오류가 이미 원인을 알려줍니다.

No such file or directory

보통 파일이나 폴더가 없다는 뜻이며, 경로 오타일 가능성이 큽니다.

Permission denied

권한이 없어서 실행 또는 접근이 불가능한 경우입니다.

command not found

명령이 존재하지 않거나, 설치되지 않았거나, PATH 환경 변수가 설정되지 않았다는 뜻입니다.

EADDRINUSE

로컬 개발 서버에서 자주 보이며, 예를 들어 3000 포트가 이미 다른 프로세스로 사용 중임을 의미합니다.

13. 권장 학습 순서

완전 초보라면 다음 순서로 추천합니다.

1. 먼저 pwd, ls, cd를 익혀 현재 위치 파악부터 시작 2. 다음으로 mkdir, touch, cp, mv로 파일 생성과 이동 이해 3. 그다음 삭제 위험이 큰 rm을 신중하게 배우되 무분별하게 쓰지 않기 4. 이어서 cat, less, head, tail로 파일과 로그 보기 습득 5. &&, |, >, >>로 명령 조합 방식 이해 6. 마지막으로 git clone, npm install, npm run dev, python main.py로 실제 프로젝트에 적용

이 정도를 익히면 GitHub 프로젝트 README에 나오는 기본 명령의 상당 부분을 충분히 이해할 수 있습니다.

14. 정리

명령줄은 신비한 기술이 아닙니다. 프로그래머만 쓰는 고급 도구도 아닙니다. 단지 컴퓨터를 조작하는 또 다른 방식입니다.

이렇게 보면 됩니다.

GUI는 마우스와 버튼으로 컴퓨터를 조작하고,
명령줄은 텍스트와 명령어로 컴퓨터를 조작합니다.

ls, cd, mkdir, pwd, git clone, npm run dev 같은 기본 명령을 익힌 뒤 GitHub, Vercel, Python, Node.js, Claude Code, AI Agent 프로젝트를 배우면 훨씬 수월합니다.

중요한 건 한 번에 모든 명령을 외우는 것이 아니라, 실제로 반복 사용하면서 점차 익숙해지는 것입니다. 모르는 명령을 만나면 먼저 나눠서 봐야 합니다. “무엇을 하려는가?”, “옵션은 무엇인가?”, “대상은 어디인가?”를 확인하세요. 그러면 명령줄은 더 이상 낯선 문자열 덩어리가 아니라, 이해하고 제어하고 재사용할 수 있는 도구가 됩니다.

자주 묻는 질문

이 글은 어떤 수준의 개발자에게 적합한가요?

본문의 “적용 대상” 설명을 참고하세요. 이 블로그의 프로그래밍 카테고리는 입문부터 AI 코딩 워크플로우 같은 중급 주제까지 다양한 난이도로 구성되어 있으며, 각 글마다 배경 지식이 다릅니다.

글에 나온 도구나 명령이 운영체제마다 다르나요?

네. macOS, Linux, Windows의 터미널 환경·경로 표기·명령 문법은 다를 수 있습니다. 본문에서 특정 운영체제가 언급되지 않았다면 공식 문서를 참고해 맞춰 사용하는 것이 좋습니다.

어떤 AI 도구를 함께 쓰면 프로그래밍 공부에 도움이 될까요?

Claude Code와 Codex는 현재 성능이 좋은 코딩용 AI 도구로, 코드 해설, 로직 보완, 디버깅, 스크립트 생성에 활용할 수 있습니다. 도구 소개는 본문에서 CC Switch 도구 글Vibe Coding 면접 질문 모음을 참고하세요.

프로그래밍에서 가장 중요한 습관은 무엇인가요?

이론보다 실습이 중요합니다. 가능한 한 빨리 작은 프로젝트 하나라도 잡고 직접 만들어 보세요. 문제를 만났을 때 문서와 코드를 보고 해결하는 습관이 핵심입니다.

참고 자료

터미널은 AI 코딩 도구의 기본 환경입니다. 터미널에서 Claude Code나 Codex 사용법을 더 알아보려면 CC Switch 도구 소개Vibe Coding 면접 질문 모음을 참고하세요.

Share

이 글 공유