LINUX · DIRECTORY BASICS

리눅스의
"폴더" = 디렉토리

Windows의 폴더, Mac의 폴더는 리눅스에서 디렉토리(directory)라고 부릅니다.
이름만 다르고 본질은 같지만, 리눅스에는 중요한 규칙구조가 있어요.

폴더(디렉토리)란?

FILE SYSTEM · CONTAINER OF FILES

폴더는 파일과 또다른 폴더를 담아두는 "상자"입니다. 리눅스에서는 이 상자를 디렉토리(directory)라고 부릅니다.

📁
CONTAINER
담는 그릇 — 파일과 하위 폴더를 정리해서 넣어두는 공간
🗂️
HIERARCHY
계층 구조 — 폴더 안에 폴더, 그 안에 또 폴더 (트리 모양)
🏠
ADDRESS
주소 — 각 파일이 어디에 있는지 경로로 표시 /home/user/file.txt
🔒
PERMISSION
권한 — 누가 읽고 쓸 수 있는지 폴더 단위로 관리

Windows와 리눅스의 차이

KEY DIFFERENCES
항목WindowsLinux
부르는 이름 폴더 (Folder) 디렉토리 (Directory)
경로 구분자 \ 역슬래시 C:\Users\Kim / 슬래시 /home/kim
루트 C:\ , D:\ 등 드라이브별 / 하나만 존재. 모든 게 / 아래
대소문자 구분 안 함 (File.txt=file.txt) 구분함. File.txtfile.txt
숨김 파일 속성으로 숨김 설정 .(점)으로 시작하면 숨김 (.bashrc)
공백 포함 이름 자연스럽게 허용 허용되지만 권장하지 않음. 따옴표나 \ 필요

루트(/)에서 시작하는 나무 구조

FILESYSTEM TREE · EVERYTHING STARTS FROM /

리눅스는 모든 것이 /(루트) 아래에 있습니다. USB를 꽂아도, 네트워크 드라이브를 연결해도 전부 / 밑 어딘가에 "마운트"됩니다.

/ ← 루트(root). 최상위. 여기서부터 모든 게 시작 ├── bin/ 기본 명령어 (ls, cp, mv 등) ├── boot/ 부팅에 필요한 파일 (커널) ├── dev/ 장치 파일 (디스크, USB, 키보드...) ├── etc/ ⭐ 시스템 설정 파일 (httpd.conf, passwd...) ├── home/ ⭐ 일반 사용자의 홈 디렉토리 │ ├── kim/ → kim 사용자의 개인 공간 │ └── lee/ → lee 사용자의 개인 공간 ├── lib/ 공용 라이브러리 ├── opt/ ⭐ 추가 설치한 소프트웨어 (예: /opt/robotion) ├── proc/ 실행 중인 프로세스 정보 (가상) ├── root/ ⭐ root 관리자의 홈 (일반 사용자의 /home/X 역할) ├── sbin/ 관리자용 명령어 (shutdown, reboot 등) ├── tmp/ ⭐ 임시 파일 (재부팅 시 초기화) ├── usr/ 사용자 프로그램, 매뉴얼 └── var/ ⭐ 로그, 웹, DB 등 자주 바뀌는 데이터 ├── log/ → 시스템/서비스 로그 └── www/ → 웹 서버 파일 (/var/www/html)
💡 TIP

우리가 지금 보고 있는 이 페이지의 실제 파일은 /var/www/html/folder/index.html에 있습니다. 브라우저 주소 /folder/는 서버의 /var/www/html/folder/ 디렉토리에 매핑됩니다.

꼭 알아야 할 주요 디렉토리

FILESYSTEM HIERARCHY STANDARD (FHS)
경로역할 / 기억법예시
/루트 (최상위)모든 폴더의 시작점. Windows의 C:\와 비슷
/root관리자 홈root(=슈퍼유저)의 개인 공간. 일반 사용자와 다름/root/.bashrc
/home일반 사용자 홈사용자마다 /home/이름/ 하나씩/home/kim/
/etc설정 파일 (et cetera)시스템·서비스 설정이 모이는 곳/etc/httpd/conf.d/
/var가변 데이터 (variable)자주 바뀌는 데이터 — 로그, 웹, DB, 메일/var/log/, /var/www/
/tmp임시 파일 (temporary)재부팅 시 사라짐. 임시 작업용/tmp/edu_pkg.tar.gz
/opt추가 소프트웨어 (optional)패키지 매니저 외 수동 설치 앱/opt/robotion/
/usr사용자 프로그램대부분의 설치된 명령어·라이브러리·매뉴얼/usr/bin/php
/bin, /sbin기본 실행 파일명령어 본체. ls, cp/bin/ls
/dev장치 파일디스크·USB·터미널이 파일처럼 보임/dev/sda1
/proc, /sys가상 파일시스템커널·프로세스 정보. 실제 디스크엔 없음/proc/cpuinfo

경로(Path) 읽는 법

ABSOLUTE vs RELATIVE

절대 경로 vs 상대 경로

🎯 절대 경로/부터 시작하는 완전한 주소. 어디서 실행해도 같은 곳을 가리킵니다.
🎯 상대 경로는 "지금 내가 있는 위치" 기준의 경로입니다.

# 지금 위치 확인 (pwd = print working directory) root@DEV00005:~$ pwd /root # 절대 경로 — 어디서든 동일 root@DEV00005:~$ ls /var/www/html 1.html 1.htm folder index.php list.html test tetris # 상대 경로 — 현재 위치가 /root이므로 ./는 /root root@DEV00005:~$ ls ./anaconda-ks.cfg anaconda-ks.cfg

특수 경로 기호

/
ROOT
맨 앞의 /는 루트(최상위). 경로 중간의 /는 구분자.
~
HOME
내 홈 디렉토리. root면 /root, kim이면 /home/kim.
.
CURRENT
지금 위치한 디렉토리 그 자체.
..
PARENT
한 단계 위(상위) 디렉토리. cd ..로 올라가기.
-
PREVIOUS
cd -는 바로 직전에 있던 디렉토리로 이동.
.X
HIDDEN
이름이 점(.)으로 시작하면 숨김 파일. ls -a로 확인.

폴더를 다루는 필수 명령어

ESSENTIAL COMMANDS
pwd
현재 위치
지금 어느 디렉토리에 있는지 절대 경로로 출력
pwd
ls
목록 보기
파일과 폴더 목록. -l 상세, -a 숨김포함
ls -la /var/www
cd
디렉토리 이동
change directory. 인자 없으면 홈(~)
cd /var/www/html
mkdir
폴더 생성
make directory. -p로 중간 경로까지
mkdir -p a/b/c
rmdir
빈 폴더 삭제
remove directory. 빈 폴더만 삭제 가능
rmdir old_folder
rm -r
재귀 삭제
안에 내용이 있어도 삭제. 매우 위험!
rm -r old_folder
cp
복사
copy. 폴더는 -r(재귀) 필요
cp -r src/ dst/
mv
이동 / 이름변경
move. 같은 위치로 옮기면 이름변경 효과
mv old.txt new.txt
tree
트리 보기
디렉토리 구조를 나무 모양으로 시각화
tree -L 2 /var/www
find
파일 찾기
이름·크기·날짜로 파일 검색
find / -name "*.php"
du -sh
용량 보기
disk usage. -sh로 사람이 읽기 쉬운 단위
du -sh /var/log
ln -s
심볼릭 링크
바로가기 생성. 원본 참조용
ln -s /var/log logs

따라 해보는 실습 시나리오

HANDS-ON

터미널을 열고 아래 순서대로 입력해보세요. 지금 이 서버에서 그대로 동작합니다.

# 1. 내 위치 확인 root@DEV00005:~$ pwd /root # 2. 홈에서 연습용 폴더 만들기 root@DEV00005:~$ mkdir -p practice/data/logs # 3. 만든 구조 확인 root@DEV00005:~$ ls -R practice practice: data practice/data: logs practice/data/logs: # 4. 파일 생성하고 가장 깊은 폴더로 이동 root@DEV00005:~$ cd practice/data/logs root@DEV00005:~/practice/data/logs$ touch hello.txt # 5. 두 단계 위로 올라가기 root@DEV00005:~/practice/data/logs$ cd ../.. root@DEV00005:~/practice$ pwd /root/practice # 6. 트리 구조 시각화 root@DEV00005:~/practice$ tree . └── data └── logs └── hello.txt # 7. 전체 삭제 (주의!) root@DEV00005:~/practice$ cd ~ root@DEV00005:~$ rm -r practice
⚠️ WARNING

rm -r / 같은 명령은 시스템 전체를 날려버립니다. 루트에서 실행하기 전에 항상 pwd로 내 위치를 확인하세요. 실습은 /root/practice처럼 안전한 전용 폴더 안에서만 하세요.

점(.)으로 시작하는 숨김 파일

DOTFILES

파일·폴더 이름이 .(점)으로 시작하면 기본 목록에서 숨겨집니다. 주로 개인 설정 파일이 이 규칙을 씁니다.

root@DEV00005:~$ ls anaconda-ks.cfg kickstart-post.log original-ks.cfg _ROBOTION # -a 플래그로 숨김까지 전부 보기 root@DEV00005:~$ ls -la drwx------ 9 root root 4096 Apr 21 11:49 . drwxr-xr-x 18 root root 235 Apr 18 09:25 .. -rw------- 1 root root 471 Apr 21 11:47 .bash_history -rw-r--r-- 1 root root 3105 Apr 21 11:46 .bashrc drwxr-xr-x 9 root root 4096 Apr 21 11:54 .claude drwxr-xr-x 2 root root 6 Jan 6 2022 .ssh

빠른 자가 체크

QUICK QUIZ · 클릭해서 답 확인
▸ 각 질문을 클릭하면 정답이 펼쳐집니다
/root/home/root는 같은 폴더일까요?
다릅니다. root 계정의 홈은 /root이고, /home/root는 일반 사용자 이름이 "root"인 경우에만 생기는 다른 위치입니다. 관례상 root의 홈만 예외적으로 /root.
cd ..는 어디로 가나요?
한 단계 위(상위) 디렉토리로 이동합니다. 예) /var/www/html에서 cd ../var/www.
재부팅하면 사라지는 폴더는?
/tmp. 임시 파일 전용이라 시스템이 주기적으로 비우고, 재부팅 시 초기화됩니다. 중요한 파일은 절대 여기에 두지 마세요.
웹 페이지 파일은 보통 어느 폴더에 두나요?
/var/www/html (Apache 기본값). var는 "자주 바뀌는 데이터"라는 의미. 지금 이 페이지도 /var/www/html/folder/index.html에 있습니다.
File.txtfile.txt는 같은 파일인가요?
리눅스에서는 다른 파일입니다. 대소문자를 구분하기 때문이에요. (Windows에서는 같은 파일)
mkdir a/b/c를 하면 오류가 날 수 있어요. 왜?
중간 경로(a, a/b)가 없으면 에러가 납니다. 중간 폴더까지 한꺼번에 만들려면 mkdir -p a/b/c처럼 -p(parents) 옵션을 붙이세요.
▸ 질문을 눌러보세요
← HOME으로 돌아가기 프로젝트 목록 →