모든 강의를 무료로 볼 수 있어요. 회원가입 없이도 학습 가능합니다.

12강 / 전체 12강

디렉터리 및 파일 조작 — FHS 구조와 기본 명령어

14분 읽기 조회 0

[1과목 3장 02절] FHS 디렉터리 계층 구조와 절대·상대 경로, ls·cd·cp·mv·rm·mkdir 등 파일 조작 명령어를 다룹니다.

🎯 이 강의 학습 목표

이 강은 1과목 3장 02절 디렉터리 및 파일 조작입니다. 이 강을 마치면 리눅스의 디렉터리가 왜 이렇게 생겼는지 설명하고 각 디렉터리의 용도를 짝지을 수 있으며, 절대 경로와 상대 경로를 구분하고, ls·cd·cp·mv·rm·mkdir의 주요 옵션을 정확히 쓸 수 있게 됩니다.

출제 형태는 "다음 중 리눅스 명령어와 가장 관계가 깊은 디렉터리는?"처럼 디렉터리와 용도를 매칭하는 문제, 그리고 옵션을 붙인 명령의 결과를 묻는 문제입니다. 디렉터리는 개수가 많지만 이름의 어원을 알면 훨씬 쉽게 정리됩니다.

💡 FHS — 리눅스 디렉터리 계층 표준

윈도우는 C:·D:처럼 드라이브 문자로 저장장치를 구분합니다. 리눅스는 다릅니다. 최상위 루트 / 하나에서 시작하는 단일 트리에 모든 것을 붙입니다. 디스크를 추가해도 새 문자가 생기는 것이 아니라 /data 같은 디렉터리에 마운트됩니다.

어느 디렉터리에 무엇을 두는지는 FHS(Filesystem Hierarchy Standard, 파일 시스템 계층 표준)로 정해져 있습니다. 배포판이 달라도 구조가 비슷한 이유가 이 표준 때문입니다.

디렉터리어원용도
/root최상위. 모든 경로의 출발점
/binbinary모든 사용자가 쓰는 기본 명령어(ls·cp·cat)
/sbinsystem bin관리자용 명령어(fdisk·ifconfig·shutdown)
/etcet cetera시스템 설정 파일(passwd·fstab·hosts)
/home—일반 사용자의 홈 디렉터리
/root—root 계정의 홈 디렉터리(/와 혼동 주의)
/varvariable계속 변하는 데이터 — 로그·메일·스풀·DB
/usrUnix System Resources사용자용 프로그램·라이브러리·문서. "user"가 아님
/liblibrary공유 라이브러리와 커널 모듈(/lib/modules)
/devdevice장치 파일(sda·tty·null)
/procprocess커널·프로세스 정보. 메모리에만 존재
/syssystem장치·드라이버 정보
/tmptmp임시 파일. 누구나 쓰기 가능(스티키 비트)
/boot—커널 이미지와 부트로더 설정
/optoptional부가 응용 프로그램(제3자 소프트웨어)
/mnt / /mediamount / media임시 마운트 / 이동식 저장장치 자동 마운트
/srvservice서비스가 제공하는 데이터

헷갈리기 쉬운 쌍을 정리합니다. /bin과 /sbin은 누가 쓰는가로 갈립니다. /sbin은 관리자용이라 일반 사용자의 PATH에 없는 경우가 많고, 11강에서 su -를 써야 하는 이유가 여기 있었습니다. /root와 /는 이름만 비슷할 뿐 완전히 다릅니다. /usr는 "user"가 아니라 Unix System Resources의 약자로, 시스템 전체가 공유하는 프로그램이 들어갑니다.

최근 배포판에서는 /bin·/sbin·/lib이 /usr 아래로 통합되고 원래 자리는 심볼릭 링크만 남는 경우가 많습니다. 잠시 뒤 실습에서 직접 확인합니다.

💡 절대 경로와 상대 경로

파일 위치를 지정하는 방법은 두 가지입니다. 절대 경로는 /에서 시작해 전체 경로를 적습니다(/home/chung/work/a.txt). 어디서 실행하든 같은 곳을 가리킵니다. 상대 경로는 현재 디렉터리를 기준으로 적습니다(work/a.txt). 짧지만 위치에 따라 결과가 달라집니다.

기호의미
.현재 디렉터리
..상위(부모) 디렉터리
~현재 사용자의 홈 디렉터리 (~lms는 lms의 홈)
-cd -에서 직전에 있던 디렉터리
/맨 앞에 오면 루트, 중간이면 구분자

cd ..는 상위 디렉터리로 이동, cd ~ 또는 인자 없는 cd는 홈으로 이동, cd -는 직전 위치로 되돌아가기입니다. 현재 위치는 pwd(print working directory)로 확인합니다.

💡 ls — 출력의 모든 것을 읽는다

ls는 가장 많이 쓰는 명령이자 옵션 문제가 가장 자주 나오는 명령입니다.

옵션의미
-l긴 형식(long) — 권한·링크 수·소유자·그룹·크기·시각
-a숨김 파일 포함(.으로 시작하는 파일). -A는 .·.. 제외
-iinode 번호 표시
-R하위 디렉터리까지 재귀적으로
-h크기를 사람이 읽기 좋게(K·M·G). -l과 함께 써야 효과
-t / -S시간순 / 크기순 정렬
-r정렬 역순
-d디렉터리 자체의 정보(내용이 아니라)
-F유형 기호 표시(/ 디렉터리, * 실행, @ 링크)

가장 흔히 쓰는 조합이 ls -al(숨김 포함 상세)과 ls -lh(읽기 좋은 크기)입니다. 리눅스에서 이름이 .으로 시작하면 숨김 파일이며, .bashrc·.profile처럼 설정 파일이 대부분 여기 해당합니다. 윈도우처럼 별도의 숨김 속성이 있는 것이 아니라 이름 규칙이라는 점이 다릅니다.

💡 파일·디렉터리 조작 명령

명령역할핵심 옵션
pwd현재 디렉터리 출력—
cd디렉터리 이동cd .. cd ~ cd -
mkdir디렉터리 생성-p 중간 경로까지 한 번에, -m 권한 지정
rmdir디렉터리 삭제빈 디렉터리만 삭제 가능
cp복사-r 디렉터리, -i 덮어쓰기 확인, -p 속성 보존, -a 보관용(=-dR --preserve=all)
mv이동 + 이름 변경-i 확인, -f 강제
rm삭제-r 디렉터리, -f 강제, -i 확인
touch빈 파일 생성 / 시각 갱신-t 시각 지정
file파일 종류 판별—
ln링크 생성-s 심볼릭 링크(17강에서 상세히)

몇 가지를 더 설명합니다. mkdir -p는 a/b/c처럼 중간 디렉터리가 없어도 한 번에 만들어 줍니다. -p 없이 실행하면 "그런 파일이나 디렉터리가 없습니다" 오류가 납니다. rmdir은 빈 디렉터리만 지우므로, 내용이 있으면 rm -r을 써야 합니다.

mv는 이동과 이름 변경을 겸합니다. 리눅스에는 rename이 기본 명령으로 따로 있지 않고, 같은 디렉터리 안에서 mv old new를 하면 그것이 이름 변경입니다.

rm -rf는 가장 위험한 명령입니다. 확인도 묻지 않고 재귀적으로 지우며 휴지통이 없습니다. 특히 경로 앞에 실수로 /를 붙이거나 와일드카드를 잘못 쓰면 되돌릴 수 없습니다. 실행 전에 같은 대상으로 ls를 먼저 실행해 목록을 눈으로 확인하는 습관이 안전합니다.

cp의 -p는 소유자·권한·시각을 보존합니다. 백업할 때 -p 없이 복사하면 시각과 권한이 복사 시점 기준으로 바뀌어 버립니다.

💻 실습으로 확인하기

아래는 모두 실제 실행 결과입니다.

$ ls -l / | head -12
drwxr-xr-x   3 root root    4096 Dec 18  2025 Docker
lrwxrwxrwx   1 root root       7 Apr 22  2024 bin -> usr/bin
drwxr-xr-x   2 root root    4096 Apr 22  2024 boot
drwxr-xr-x  15 root root    3860 Sep 11 12:27 dev
drwxr-xr-x  90 root root    4096 Sep 12 19:47 etc
drwxr-xr-x   5 root root    4096 Sep 11 23:01 home
lrwxrwxrwx   1 root root       7 Apr 22  2024 lib -> usr/lib
drwx------   2 root root   16384 Dec 18  2025 lost+found
dr-xr-xr-x 357 root root       0 Sep 11 12:27 proc
drwx------   5 root root    4096 Dec 18  2025 root
lrwxrwxrwx   1 root root       8 Apr 22  2024 sbin -> usr/sbin

앞에서 표로 외운 디렉터리들이 실제로 보입니다. 세 가지를 짚겠습니다.

첫째, bin·lib·sbin의 첫 글자가 l입니다. 이것은 심볼릭 링크를 뜻하며 -> 뒤에 실제 대상이 표시됩니다. /bin이 usr/bin을 가리키고 있는데, 앞에서 말한 /usr 통합이 이 시스템에 적용되어 있음을 보여 줍니다. 둘째, /proc의 크기가 0입니다. 8강에서 배운 대로 디스크에 실체가 없는 가상 파일 시스템이기 때문입니다. 셋째, /root의 권한이 drwx------로 root만 접근 가능합니다. 반면 /home은 drwxr-xr-x로 열려 있습니다. 관리자 홈을 보호하는 설계가 권한에 드러납니다.

$ cd /tmp/lm12
$ mkdir -p deep/a/b/c
$ find deep -type d
deep
deep/a
deep/a/b
deep/a/b/c

mkdir -p로 네 단계를 한 번에 만들었습니다. find deep -type d는 deep 아래에서 디렉터리만(-type d) 찾아 출력합니다. -p가 중간 경로를 모두 생성했음이 확인됩니다.

$ ls -l
lrwxrwxrwx 1 chung chung   10 Sep 12 20:57 link_a -> work/a.txt
drwxr-xr-x 3 chung chung 4096 Sep 12 20:57 work

$ file work/a.txt link_a work
work/a.txt: ASCII text
link_a:     symbolic link to work/a.txt
work:       directory

ls -l의 맨 앞 한 글자가 파일 유형입니다. l은 심볼릭 링크, d는 디렉터리, -는 일반 파일입니다. file 명령은 같은 사실을 사람이 읽는 문장으로 알려 줍니다. 확장자로 종류를 판단하는 윈도우와 달리, 리눅스는 파일 내용을 검사해 종류를 판별한다는 점이 중요합니다. 확장자가 없는 a.txt 대신 a였어도 ASCII text로 나옵니다.

$ ls -li work/
647309 -rw-r--r-- 1 chung chung   12 Sep 12 20:57 a.txt
647323 -rw-r--r-- 1 chung chung    0 Sep 12 20:57 b.txt
647306 drwxr-xr-x 2 chung chung 4096 Sep 12 20:57 docs

-i를 붙이면 맨 앞에 inode 번호가 나옵니다. touch로 만든 b.txt의 크기가 0인 것도 확인됩니다. inode의 의미는 17강에서 다룹니다.

$ mkdir empty && rmdir empty
$ rmdir work
rmdir: failed to remove 'work': Directory not empty

rmdir은 빈 디렉터리만 지운다는 규칙이 오류 메시지로 확인됩니다. empty는 지워졌지만 파일이 들어 있는 work는 Directory not empty 오류가 났습니다. 이 경우 rm -r work를 써야 합니다.

⚠️ 시험에 나오는 함정

함정정확한 사실
/usr는 user의 약자다Unix System Resources. 사용자 홈은 /home
/root는 최상위 디렉터리다최상위는 /. /root는 root의 홈 디렉터리
rmdir로 내용이 있는 디렉터리를 지운다빈 디렉터리만. 아니면 rm -r
cp로 디렉터리를 그냥 복사한다-r 필요
ls -h만 쓰면 크기가 보기 좋게 나온다-l과 함께 써야 효과(ls -lh)
숨김 파일은 별도 속성이 있다이름이 .으로 시작하면 숨김. ls -a로 확인
관리자 명령은 /bin에 있다관리자용은 /sbin
파일 종류는 확장자로 결정된다리눅스는 내용으로 판별(file 명령)

📝 핵심 요약 — 암기표

항목핵심
구조/ 하나에서 시작하는 단일 트리(드라이브 문자 없음)
명령어 위치일반 /bin · 관리자 /sbin
설정 / 변동 데이터/etc / /var(로그·메일·스풀)
장치 / 커널 정보/dev / /proc·/sys
/usrUnix System Resources — 프로그램·라이브러리·문서
경로 기호. 현재 · .. 상위 · ~ 홈 · cd - 직전 위치
ls 핵심-l 상세 · -a 숨김 · -i inode · -h(-l과 함께) · -t/-S 정렬
mkdir -p중간 경로까지 한 번에 생성
rmdir vs rm -r빈 디렉터리만 vs 내용까지
cp 옵션-r 디렉터리 · -p 속성 보존 · -i 확인
mv이동 + 이름 변경 겸용
파일 유형 첫 글자- 일반 · d 디렉터리 · l 심볼릭 링크 · b/c 장치

다음 13강에서는 파일 내용을 보는 cat·more·less·head·tail, 검색하는 find·grep·which, 도움말 man, 시스템 정보 명령을 다룹니다.

📋 실전 문제

1. 다음 중 리눅스 기본 명령어와 가장 관계가 깊은 디렉터리는?
① /bin    ② /etc    ③ /var    ④ /opt

2. 디렉터리와 용도의 연결로 틀린 것은?
① /etc — 시스템 설정 파일이 위치한다.
② /var — 로그·메일 등 계속 변하는 데이터가 위치한다.
③ /root — 파일 시스템의 최상위 디렉터리이다.
④ /dev — 장치 파일이 위치한다.

3. work 디렉터리 안에 파일이 들어 있을 때, 이 디렉터리를 삭제하는 명령으로 알맞은 것은?
① rmdir work    ② rm work
③ rm -r work    ④ mv work /dev/null

4. 존재하지 않는 중간 디렉터리까지 한 번에 생성하는 명령은?
① mkdir a/b/c    ② mkdir -p a/b/c
③ mkdir -r a/b/c    ④ mkdir -m a/b/c

5. 파일의 소유자·권한·시각 등 속성을 보존하면서 복사하는 옵션은?
① cp -i    ② cp -f    ③ cp -p    ④ cp -v

6. ls -l 출력의 맨 앞 한 글자가 l인 경우 그 파일의 유형은?
① 일반 파일    ② 디렉터리    ③ 심볼릭 링크    ④ 블록 장치

7. 숨김 파일을 포함하여 파일 목록을 상세 정보와 함께 출력하는 명령은?
① ls -h    ② ls -al    ③ ls -R    ④ ls -d

8. 현재 디렉터리를 직전에 머물던 디렉터리로 되돌리는 명령은?
① cd ..    ② cd ~    ③ cd -    ④ cd /

✅ 정답과 해설

1. 정답 ①
/bin(binary)에 ls·cp·cat 같은 모든 사용자가 쓰는 기본 명령어가 들어 있습니다. ②의 /etc는 설정 파일, ③의 /var는 변동 데이터, ④의 /opt는 부가 응용 프로그램입니다. 관리자 전용 명령을 묻는다면 답은 /sbin입니다.

2. 정답 ③
최상위 디렉터리는 /이고, /root는 root 계정의 홈 디렉터리입니다. 이름이 비슷해 혼동을 노린 대표적 선지입니다. ①·②·④는 모두 옳습니다.

3. 정답 ③
내용이 있는 디렉터리는 rm -r로 지웁니다. ①의 rmdir은 빈 디렉터리만 지울 수 있어 Directory not empty 오류가 납니다. ②의 rm은 옵션 없이 디렉터리를 지울 수 없고, ④는 삭제 방법이 아닙니다.

4. 정답 ②
-p(parents)가 중간 경로를 필요한 만큼 만들어 줍니다. ①은 a와 a/b가 미리 있어야만 성공합니다. ③의 -r은 mkdir의 옵션이 아니며, ④의 -m은 권한을 지정하는 옵션입니다.

5. 정답 ③
-p(preserve)가 소유자·그룹·권한·시각을 유지합니다. 백업 용도에서 중요합니다. ①의 -i는 덮어쓰기 확인, ②의 -f는 강제, ④의 -v는 진행 내역 출력입니다. 디렉터리까지 통째로 보존하려면 -a를 씁니다.

6. 정답 ③
첫 글자 l은 심볼릭 링크입니다. -는 일반 파일, d는 디렉터리, b는 블록 장치, c는 문자 장치입니다. 심볼릭 링크는 ls -l에서 이름 -> 대상 형태로 표시됩니다.

7. 정답 ②
-a(숨김 포함)와 -l(상세)을 합친 ls -al입니다. ①의 -h는 -l과 함께 써야 의미가 있고, ③의 -R은 하위 디렉터리 재귀 출력, ④의 -d는 디렉터리 자체 정보만 봅니다.

8. 정답 ③
cd -가 직전 디렉터리로 되돌아갑니다. ①의 cd ..는 상위 디렉터리, ②의 cd ~는 홈 디렉터리(인자 없는 cd와 동일), ④의 cd /는 최상위로 이동합니다.

📚 참고 자료

관련 주제

  • FHS
  • 디렉터리 구조
  • 절대경로
  • 상대경로
  • ls 옵션
  • cp
  • rm
  • mkdir
  • 자격증
  • 자격증 강의
  • 리눅스마스터 2급 완전정복
  • 무료강의
  • 무료 온라인 강의
  • NUGUNA
  • 누구나

📚 시리즈 전체 공유

리눅스마스터 2급 완전정복

이 강의가 속한 시리즈는 총 12강, 모두 무료입니다. 처음부터 배우려는 동료에게 시리즈 전체를 알려 주세요.

댓글

0/1000

불러오는 중...