Skip to content

WSL 기본 사용법

Published: at 05:57 PM

들어가며

이전 차시에서 WSL을 설치하고 Ubuntu 초기 설정을 완료했다. 이제 WSL을 실제로 사용할 차례다.

이번 차시에서는 WSL을 시작하고 종료하는 방법, Linux에서 자주 사용하는 기본 명령어, Windows와 Linux 간 파일 시스템 접근 방법, 그리고 apt를 사용한 패키지 관리까지 다룬다. Claude Code를 WSL에서 사용하기 전에 반드시 익혀야 할 내용이다.

WSL 시작 및 종료

WSL 시작

WSL을 시작하는 방법은 여러 가지가 있다.

PowerShell 또는 명령 프롬프트에서 시작

# 기본 배포판 시작
wsl

# 홈 디렉토리에서 시작
wsl ~

# 특정 배포판 시작
wsl -d Ubuntu-22.04

# 특정 사용자로 시작
wsl --user root

wsl 명령만 입력하면 기본 배포판이 시작된다. wsl ~을 사용하면 Linux 홈 디렉토리(/home/사용자명)에서 바로 시작할 수 있다.

Windows Terminal에서 시작

Windows Terminal을 사용하면 더 편리하다. 상단 탭 옆의 + 버튼(또는 드롭다운 화살표)을 클릭하면 설치된 Linux 배포판이 목록에 나타난다. Ubuntu를 선택하면 새 탭에서 WSL이 시작된다.

시작 메뉴에서 시작

시작 메뉴에서 “Ubuntu”를 검색해서 직접 실행할 수도 있다.

WSL 종료

# 현재 WSL 세션 종료 (WSL 터미널 안에서)
exit

# 모든 WSL 인스턴스 종료 (PowerShell에서)
wsl --shutdown

# 특정 배포판만 종료 (PowerShell에서)
wsl --terminate Ubuntu

exit은 현재 셸 세션만 종료한다. wsl --shutdown은 실행 중인 모든 WSL 인스턴스와 WSL 2 가상 머신을 완전히 종료한다. 메모리를 확보하거나 .wslconfig 설정을 변경한 후 적용할 때 사용한다.

WSL 상태 확인

# WSL 전반적인 상태 확인
wsl --status

# 설치된 배포판과 실행 상태 확인
wsl -l -v

# WSL 버전 정보 확인
wsl --version

wsl -l -v 출력 예시:

  NAME            STATE           VERSION
* Ubuntu          Running         2
  Debian          Stopped         1

STATERunning이면 현재 실행 중이고, Stopped이면 종료된 상태다. VERSION 열은 WSL 버전(1 또는 2)을 나타낸다. *는 기본 배포판을 의미한다.

기본 Linux 명령어

WSL에서 사용하는 것은 실제 Linux다. Linux의 기본 명령어를 알아야 터미널에서 작업할 수 있다.

디렉토리 탐색

# 현재 위치 확인
pwd

# 디렉토리 이동
cd /home/username      # 절대 경로로 이동
cd ~                   # 홈 디렉토리로 이동
cd ..                  # 상위 디렉토리로 이동
cd -                   # 이전 디렉토리로 이동

# 디렉토리 내용 보기
ls                     # 기본 목록
ls -l                  # 상세 정보 (권한, 크기, 날짜)
ls -la                 # 숨김 파일 포함 상세 정보
ls -lh                 # 파일 크기를 읽기 쉬운 단위로 표시

pwd는 “print working directory”의 약자로, 현재 위치를 절대 경로로 보여준다. cd는 “change directory”의 약자다. ~는 홈 디렉토리를 가리키는 단축 표현이다.

ls -la 출력 예시:

drwxr-xr-x 4 user user 4096 Mar 29 10:00 .
drwxr-xr-x 3 root root 4096 Mar 28 15:00 ..
-rw-r--r-- 1 user user  220 Mar 28 15:00 .bash_logout
-rw-r--r-- 1 user user 3771 Mar 28 15:00 .bashrc
drwxr-xr-x 2 user user 4096 Mar 29 10:00 projects

맨 앞의 d는 디렉토리, -는 파일을 의미한다. 그 뒤의 rwxr-xr-x는 권한 정보다.

파일 및 디렉토리 조작

# 디렉토리 생성
mkdir my-project
mkdir -p parent/child/grandchild    # 중첩 디렉토리 한 번에 생성

# 빈 파일 생성
touch newfile.txt

# 파일 복사
cp file.txt copy.txt
cp -r folder/ folder_copy/          # 디렉토리 복사 (-r: recursive)

# 파일 이동 또는 이름 변경
mv old.txt new.txt                  # 이름 변경
mv file.txt /path/to/destination/   # 파일 이동

# 파일 삭제
rm file.txt                         # 파일 삭제
rm -r folder/                       # 디렉토리와 내용 삭제

mkdir -p는 중간 디렉토리가 없으면 함께 생성한다. cp -r-r은 “recursive”로, 디렉토리 안의 모든 내용을 재귀적으로 복사한다.

주의: rm -rf /처럼 루트 디렉토리를 대상으로 강제 삭제 명령을 실행하면 시스템 전체가 삭제될 수 있다. rm 명령은 항상 대상 경로를 확인한 후 실행해야 한다.

파일 내용 보기

# 파일 전체 내용 출력
cat file.txt

# 페이지 단위로 보기 (q로 종료)
less file.txt

# 파일의 처음 부분 보기
head -n 20 file.txt         # 처음 20줄

# 파일의 끝 부분 보기
tail -n 20 file.txt         # 마지막 20줄
tail -f log.txt             # 실시간 모니터링 (로그 확인에 유용)

cat은 짧은 파일을 볼 때 적합하다. 긴 파일은 less를 사용하면 위아래로 스크롤하며 볼 수 있다. tail -f는 로그 파일처럼 계속 추가되는 파일을 실시간으로 모니터링할 때 사용한다.

검색

# 파일 내용에서 문자열 검색
grep "검색어" file.txt
grep -r "검색어" ./              # 디렉토리 내 모든 파일에서 검색
grep -i "검색어" file.txt        # 대소문자 무시

# 파일 찾기
find . -name "*.txt"             # 현재 디렉토리에서 .txt 파일 찾기
find /home -name "config"        # /home에서 config라는 이름의 파일 찾기

grep은 파일 내용에서 특정 문자열을 찾는 명령어다. -r 옵션은 디렉토리를 재귀적으로 검색한다. Claude Code도 내부적으로 파일 검색에 이와 유사한 도구를 사용한다.

권한 관리

Linux에서는 모든 파일과 디렉토리에 권한이 설정되어 있다.

# 권한 확인
ls -l file.txt
# -rw-r--r-- 1 user group 1234 Mar 29 10:00 file.txt

권한 문자열 -rw-r--r--의 구조:

위치의미예시
1번째파일 유형- (파일), d (디렉토리)
2~4번째소유자(owner) 권한rw- (읽기+쓰기)
5~7번째그룹(group) 권한r-- (읽기만)
8~10번째기타(others) 권한r-- (읽기만)
# 실행 권한 추가
chmod +x script.sh

# 숫자로 권한 설정
chmod 755 script.sh      # rwxr-xr-x (소유자: 전체, 그룹/기타: 읽기+실행)
chmod 644 file.txt       # rw-r--r-- (소유자: 읽기+쓰기, 그룹/기타: 읽기)

# 소유자 변경 (관리자 권한 필요)
sudo chown user:group file.txt

숫자 권한에서 r=4, w=2, x=1이다. 755는 소유자에게 4+2+1=7(전체 권한), 그룹과 기타에게 4+0+1=5(읽기+실행)를 부여한다.

기타 유용한 명령어

# 현재 사용자 확인
whoami

# 디스크 사용량 확인
df -h                    # 전체 디스크 사용량
du -sh folder/           # 특정 폴더 크기

# 실행 중인 프로세스 확인
ps aux
htop                     # 대화형 프로세스 모니터 (설치 필요)

# 명령어 도움말
man ls                   # ls 명령어 매뉴얼
ls --help                # 간단한 도움말

# 이전 명령어 검색
history                  # 명령어 이력 보기

man 명령어는 각 명령어의 상세 매뉴얼을 보여준다. 매뉴얼 안에서 /검색어로 검색하고, q로 종료할 수 있다.

Windows와 Linux 간 파일 시스템

WSL의 가장 중요한 특징 중 하나는 Windows와 Linux 파일 시스템을 상호 접근할 수 있다는 점이다.

Linux 디렉토리 구조

Linux 파일 시스템은 Windows와 구조가 다르다. C:\이나 D:\ 같은 드라이브 문자 대신 /(루트)부터 시작하는 트리 구조다.

/
├── home/            # 사용자 홈 디렉토리
│   └── username/    # 개인 파일 (~로 접근)
├── usr/             # 사용자 프로그램
│   ├── bin/         # 실행 파일
│   └── local/       # 로컬 설치 프로그램
├── etc/             # 시스템 설정 파일
├── var/             # 로그, 캐시 등 가변 데이터
├── tmp/             # 임시 파일
└── mnt/             # 마운트 포인트 (Windows 드라이브)
    ├── c/           # Windows C: 드라이브
    └── d/           # Windows D: 드라이브

주요 디렉토리:

경로용도
/home/username/사용자의 개인 파일. 프로젝트를 여기에 저장한다
/usr/bin/시스템에 설치된 프로그램의 실행 파일
/etc/시스템 설정 파일 (예: /etc/hosts)
/tmp/임시 파일. 재부팅 시 삭제될 수 있다
/mnt/외부 드라이브 마운트 위치

Linux에서 Windows 파일 접근

Windows 드라이브는 /mnt/ 아래에 자동으로 마운트된다.

# C 드라이브 접근
cd /mnt/c

# D 드라이브 접근
cd /mnt/d

# Windows 사용자 폴더
cd /mnt/c/Users/YourName/

# Windows 바탕화면
cd /mnt/c/Users/YourName/Desktop

# Windows 문서 폴더의 프로젝트
cd /mnt/c/Users/YourName/Documents/my-project

Windows에서 Linux 파일 접근

Windows 탐색기 주소창에 다음을 입력하면 Linux 파일 시스템에 접근할 수 있다.

\\wsl$\Ubuntu\home\username

또는 WSL 터미널에서 현재 폴더를 Windows 탐색기로 여는 방법도 있다.

# 현재 디렉토리를 Windows 탐색기로 열기
explorer.exe .

파일 시스템 성능 차이

WSL2에서 파일 시스템 성능은 파일이 어디에 저장되어 있느냐에 따라 크게 달라진다.

작업 위치성능설명
Linux 파일 시스템 (/home/)빠름WSL2의 네이티브 ext4 파일 시스템
Windows 파일 시스템 (/mnt/c/)느림9P 프로토콜을 통한 파일 시스템 변환

Microsoft 공식 문서에서도 Linux 명령줄에서 작업할 때는 Linux 파일 시스템에, Windows 명령줄에서 작업할 때는 Windows 파일 시스템에 파일을 저장하라고 권장한다.

권장 사항:

# 프로젝트 디렉토리 생성 (권장 위치)
mkdir -p ~/projects
cd ~/projects

# 여기서 프로젝트를 클론하거나 생성
git clone https://github.com/your/project.git

Windows와 Linux 명령 혼합 사용

WSL에서는 Windows 실행 파일을 .exe 확장자를 붙여서 직접 실행할 수 있다.

# WSL에서 Windows 메모장 열기
notepad.exe file.txt

# WSL에서 Windows 탐색기 열기
explorer.exe .

# WSL에서 Windows의 ipconfig 실행
ipconfig.exe

반대로 PowerShell에서도 wsl 명령을 통해 Linux 명령을 실행할 수 있다.

# PowerShell에서 Linux의 ls 실행
wsl ls -la

# PowerShell에서 Linux의 grep으로 필터링
dir | wsl grep "txt"

대소문자 민감도 차이

Windows 파일 시스템은 대소문자를 구분하지 않지만, Linux 파일 시스템은 구분한다.

# Linux에서는 이 두 파일이 다른 파일
touch README.md
touch readme.md
ls
# README.md  readme.md  (두 파일이 별도로 존재)

Windows에서는 README.mdreadme.md가 같은 파일로 취급된다. 프로젝트를 Windows 파일 시스템(/mnt/c/)에서 작업할 때 이 차이로 인해 Git에서 문제가 발생할 수 있다. Linux 파일 시스템에서 작업하면 이 문제를 피할 수 있다.

패키지 관리 (apt)

Ubuntu에서는 apt(Advanced Package Tool)로 소프트웨어를 설치하고 관리한다. Windows의 앱 스토어나 macOS의 Homebrew와 비슷한 역할을 한다.

패키지 목록 업데이트

sudo apt update

이 명령은 패키지를 설치하는 것이 아니라, 사용 가능한 패키지 목록을 최신 상태로 갱신하는 것이다. 패키지를 설치하기 전에 항상 먼저 실행하는 것이 좋다.

sudo는 “superuser do”의 약자로, 관리자(root) 권한으로 명령을 실행한다. 처음 사용할 때 WSL 설치 시 설정한 비밀번호를 입력해야 한다.

패키지 업그레이드

# 설치된 패키지를 최신 버전으로 업그레이드
sudo apt upgrade

# 업데이트와 업그레이드를 한 번에
sudo apt update && sudo apt upgrade

패키지 설치

# 단일 패키지 설치
sudo apt install git

# 여러 패키지 동시 설치
sudo apt install git curl wget

# 설치 확인 없이 자동 진행 (-y 옵션)
sudo apt install -y build-essential

패키지 제거

# 패키지 제거
sudo apt remove package-name

# 패키지와 설정 파일까지 제거
sudo apt purge package-name

# 사용하지 않는 의존성 패키지 정리
sudo apt autoremove

패키지 검색 및 정보 확인

# 패키지 검색
apt search nodejs

# 패키지 정보 확인
apt show nodejs

Claude Code 사용을 위한 필수 패키지

다음 차시에서 자세히 다루지만, Claude Code를 WSL에서 사용하려면 몇 가지 패키지가 필요하다.

# 시스템 업데이트
sudo apt update && sudo apt upgrade -y

# 기본 개발 도구
sudo apt install -y build-essential git curl wget

# 샌드박싱을 위한 패키지 (Claude Code에서 사용)
sudo apt install -y bubblewrap socat

bubblewrapsocat은 Claude Code의 샌드박싱 기능에 필요한 패키지다. 샌드박싱은 Claude Code가 실행하는 명령을 지정된 디렉토리와 네트워크 도메인으로 격리하는 보안 기능이다.

정리

핵심 요점

  1. WSL 시작/종료: wsl 명령으로 시작하고, exit으로 세션을 종료한다. wsl --shutdown으로 모든 인스턴스를 완전히 종료할 수 있다

  2. 디렉토리 탐색: pwd로 현재 위치 확인, cd로 이동, ls로 목록 보기가 기본이다

  3. 파일 조작: mkdir, touch, cp, mv, rm 명령어로 파일과 디렉토리를 관리한다

  4. 파일 시스템: Windows 파일은 /mnt/c/에서 접근하고, Linux 파일은 \\wsl$\에서 접근한다. 성능을 위해 프로젝트는 Linux 파일 시스템에 저장한다

  5. 패키지 관리: sudo apt update로 목록을 갱신하고, sudo apt install로 패키지를 설치한다

명령어 요약

분류명령어설명
WSL 관리wslWSL 시작
wsl --shutdown모든 인스턴스 종료
wsl -l -v배포판 상태 확인
디렉토리pwd현재 위치 확인
cd 경로디렉토리 이동
ls -la상세 목록 보기
mkdir -p 경로디렉토리 생성
파일touch 파일명빈 파일 생성
cp 원본 대상파일 복사
mv 원본 대상이동/이름 변경
rm 파일명파일 삭제
보기cat 파일명파일 내용 출력
less 파일명페이지 단위 보기
head -n N 파일명처음 N줄 보기
tail -n N 파일명마지막 N줄 보기
검색grep "문자열" 파일파일 내 문자열 검색
find . -name "패턴"파일 찾기
권한chmod +x 파일명실행 권한 추가
sudo 명령관리자 권한 실행
패키지sudo apt update패키지 목록 갱신
sudo apt install 패키지패키지 설치
파일 시스템/mnt/c/Windows C: 드라이브
explorer.exe .현재 폴더를 탐색기로 열기

확인해볼 링크

다음 단계

다음 차시에서는 WSL 환경에 Node.js와 Git을 설정하고, Claude Code를 설치하는 방법을 다룬다. VS Code와 WSL을 연동하는 방법도 함께 학습한다.

참고 자료


Next Post
WSL 소개 및 설치