Linux 강좌 / 파일 시스템 이해하기 - 절대·상대 경로와 주요 디렉터리

리눅스의 파일 시스템은 /에서 시작하는 하나의 디렉터리 트리로 볼 수 있습니다. 파일의 위치는 경로로 나타내며, 현재 위치를 기준으로 쓰는 상대 경로와 /부터 쓰는 절대 경로를 구별하면 명령어가 어느 파일에 작용하는지 판단하기 쉬워집니다. 이 강좌에서는 경로를 읽는 법과 자주 만나는 디렉터리의 역할을 익힙니다.

하나의 트리로 이어지는 파일 시스템

Windows의 드라이브 문자와 달리, 리눅스에서는 최상위 디렉터리인 루트 디렉터리 / 아래에 파일과 디렉터리가 이어집니다. 별도의 디스크나 파일 시스템을 연결해도 보통 트리의 어느 디렉터리에 붙여 사용합니다. 이 연결을 마운트라고 합니다. 트리의 모양만 보고 파일이 실제로 어느 디스크에 저장되어 있는지는 알 수 없습니다.

/와 /root는 다릅니다. /는 전체 트리의 시작점이고, /root는 일반적으로 관리자(root) 계정의 홈 디렉터리입니다. 일반 사용자 홈 디렉터리는 흔히 /home/사용자명이지만, 계정 설정에 따라 다른 위치일 수 있습니다.

절대 경로와 상대 경로

절대 경로는 /로 시작합니다. 예를 들어 /etc/hosts는 현재 어디에 있든 같은 위치를 가리킵니다. 상대 경로는 현재 작업 디렉터리를 기준으로 해석됩니다. 현재 위치가 /home/learner라면 notes/todo.txt는 /home/learner/notes/todo.txt를 뜻합니다.

표기 뜻 예
/ 파일 시스템 트리의 시작점 /etc/hosts
. 현재 디렉터리 ./script.sh
.. 상위 디렉터리 ../notes
~ 셸에서 현재 사용자의 홈 디렉터리로 확장 ~/notes

.과 ..은 상대 경로를 구성하는 디렉터리 항목입니다. ~는 파일 시스템에 실제로 있는 이름이 아니라 Bash 같은 셸이 명령을 실행하기 전에 확장하는 표기입니다. 특히 '~/notes'처럼 작은따옴표로 감싸면 ~가 홈 디렉터리로 확장되지 않습니다.

경로에는 /를 구분자로 사용하며 대소문자를 구별합니다. 따라서 Notes와 notes는 서로 다른 이름일 수 있습니다. 공백이 포함된 경로는 'project notes'처럼 따옴표로 묶거나 공백을 이스케이프해야 하나의 인수로 전달됩니다.

주요 디렉터리의 역할

아래 표는 흔히 볼 수 있는 위치의 일반적인 역할입니다. 배포판과 설치 방식에 따라 디렉터리가 없거나 다른 위치로 연결될 수 있으며, 모든 파일이 표의 설명에 딱 맞게 배치되는 것은 아닙니다.

경로 일반적인 역할
/home 일반 사용자 홈 디렉터리가 놓이는 곳
/etc 시스템과 서비스의 설정 파일
/usr 사용자 공간의 프로그램과 공유 데이터
/var 로그·캐시처럼 운영 중 내용이 변하는 데이터
/tmp 임시 파일을 두는 곳
/dev 장치를 나타내는 파일
/proc, /sys 커널과 시스템 정보를 보여 주는 가상 파일 시스템
/boot 부팅에 필요한 파일이 놓이는 곳
/mnt, /media 추가 저장 장치 등을 연결할 때 사용하는 위치

/proc와 /sys의 항목을 일반 문서처럼 무작정 편집하거나 삭제해서는 안 됩니다. /tmp에 중요한 자료를 장기간 보관하는 것도 피하세요. 시스템 정책에 따라 임시 파일이 정리될 수 있습니다. 설정을 바꿀 목적이라도 /etc의 파일은 의미를 확인하고 백업한 뒤 수정해야 합니다.

경로를 읽는 연습

다음 경로를 왼쪽부터 읽어 보세요. /home/learner/projects/report.txt에서 /는 시작점, home과 learner와 projects는 차례로 거치는 디렉터리, report.txt는 마지막 항목입니다. 이름에 점이 들어 있다고 해서 파일 형식이나 존재 여부가 확정되는 것은 아닙니다.

현재 위치가 /home/learner/projects라고 가정하면 ../notes.txt는 상위 디렉터리인 /home/learner의 notes.txt를 가리킵니다. 이 경로가 실제로 존재하는지는 별도로 확인해야 합니다. 경로를 읽는 것과 파일의 존재를 확인하는 것은 다른 작업입니다.

명령을 실행하기 전에는 ‘현재 위치가 어디인가’, ‘입력한 경로가 절대 경로인가 상대 경로인가’를 먼저 확인하세요. 특히 파일을 옮기거나 지우는 명령에서는 상대 경로를 잘못 해석하면 의도하지 않은 대상에 작업할 수 있습니다. 터미널과 셸 시작하기 강좌에서 명령어의 기본 구조를 읽는 법을 살펴볼 수 있습니다.

공식 문서

디렉터리의 일반적인 배치 기준은 Filesystem Hierarchy Standard 3.0을 참고했습니다. 실제 구성은 사용하는 배포판과 시스템 설정을 함께 확인하세요.

같은 카테고리의 다른 글
Linux / 명령어 / tar - 여러 파일을 묶고 압축 아카이브 풀기

Linux / 명령어 / tar - 여러 파일을 묶고 압축 아카이브 풀기

Linux tar 명령어의 용도와 기본 문법을 알아봅니다. 파일 처리 예제, 주요 옵션과 원본 보존·덮어쓰기 주의점을 설명합니다.

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux / 명령어 / screen - 터미널 세션 유지와 관리

Linux screen 명령어로 원격 터미널 세션을 분리하고 다시 연결하는 방법을 설명합니다. 세션·창 관리, 로그 기록, 문제 해결과 nohup·tmux·systemd의 차이를 정리합니다.

Linux / machine-id 확인 방법과 시스템 복제 시 주의사항

Linux / machine-id 확인 방법과 시스템 복제 시 주의사항

machine-id의 역할과 확인 방법, 복제용 이미지에서 파일을 삭제·비우거나 uninitialized로 설정할 때의 차이를 설명합니다. 운영 중인 서버의 ID 중복을 안전하게 처리하기 위한 점검 사항도 다룹니다.

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

Linux 강좌 / 파일과 명령 찾기 - find, locate, which, whereis

find와 locate로 파일을 찾고 which, whereis, type으로 명령의 위치와 해석 방식을 확인합니다. 실시간 검색과 색인 검색의 차이도 짚습니다.

Linux / 명령어 / kill - PID에 시그널 보내기

Linux / 명령어 / kill - PID에 시그널 보내기

Linux kill 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux / 명령어 / apt - Debian·Ubuntu에서 패키지 검색·설치·업데이트

Linux apt 명령어의 적용 배포판과 기본 작업을 설명합니다. 패키지 조회·설치 예제, 주요 옵션과 시스템 변경 시 주의점을 알아봅니다.

Linux / 명령어 / who - 현재 로그인 세션 확인

Linux / 명령어 / who - 현재 로그인 세션 확인

Linux who 명령어의 기본 문법과 실제 사용 예제를 설명합니다. 주요 옵션과 결과를 해석할 때 주의할 점을 확인할 수 있습니다.

Linux / 명령어 / du - 파일과 디렉터리 용량 확인

Linux / 명령어 / du - 파일과 디렉터리 용량 확인

Linux du 명령어로 디렉터리와 파일의 디스크 사용량을 확인하고 큰 항목을 찾는 방법을 설명합니다. apparent size, 파일시스템 경계와 df 결과가 다른 이유도 정리합니다.

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux / 명령어 / resolvectl - systemd DNS 설정과 이름 조회 상태 확인

Linux resolvectl 명령어의 기능과 기본 문법을 설명합니다. 실제 사용 예제, 주요 옵션과 작업 전 확인할 점을 알아봅니다.

Linux 강좌 / 프로세스 확인·일시정지·종료하기

Linux 강좌 / 프로세스 확인·일시정지·종료하기

ps, top, pgrep으로 프로세스의 상태와 자원 사용량을 확인합니다. 실습 프로세스에 STOP, CONT, TERM을 보내고 셸 작업과 서비스의 차이를 익힙니다.