디렉터리 (Directory)
이 페이지는 바이브 코딩 문맥에서 자주 쓰이는 디렉터리 (Directory)의 뜻과 쓰임을 입문 난이도 기준으로 정리한 AI 용어사전 항목입니다. 정의와 맥락, 관련 용어 5개 순서로 묶었으니, 아래 설명을 먼저 읽고 연결된 개념과 글까지 이어서 보면 이해가 빨라집니다.
디렉터리(Directory)는 파일과 다른 디렉터리를 하나의 이름 아래 묶어 계층을 만드는 파일 시스템의 자료 구조입니다. 파일 탐색기에서 폴더로 보이는 대상이 보통 디렉터리이며, 디렉터리 안에 다시 디렉터리를 두면 나무 모양의 구조가 생깁니다. 디렉터리 이름을 구분 문자로 이어 붙이면 파일 위치를 글자로 적은 경로가 됩니다.
파일 시스템 안의 디렉터리 구조
마이크로소프트의 Win32 파일 이름 규칙 문서는 디렉터리를 디렉터리임을 나타내는 특수 속성이 붙은 파일로 설명합니다. 파일 시스템이 보기에는 특수한 종류의 파일이라서 디렉터리 이름도 일반 파일과 같은 이름 규칙을 따르고, 일부 참고 자료는 ‘파일’이라는 말로 디렉터리와 데이터 파일을 함께 가리킵니다. 이름을 이루는 세부 규칙은 NTFS, exFAT, FAT32 같은 파일 시스템마다 다를 수 있습니다.
같은 문서는 경로를 어떤 파일이나 디렉터리에 이르기까지 놓인 디렉터리들의 계층을 문자열로 나타낸 것으로 정리합니다. Windows에서는 백슬래시(\)로 경로의 구성 요소를 나누고, 각 구성 요소는 보통 디렉터리 이름이나 파일 이름입니다. 파일 이름은 마지막 구성 요소여야 하므로 C:\project\docs\readme.md에서 readme.md가 파일이면 앞의 project와 docs는 그 파일을 담은 디렉터리입니다.
구분에 쓰는 문자는 이름 안에 넣을 수 없습니다. 이 문서는 백슬래시를 경로를 나누는 예약 문자로 두고, <, >, :, ", /, |, ?, *도 파일과 디렉터리 이름에서 제외합니다. 이름 끝의 공백이나 마침표도 피하라고 적는데, 파일 시스템 자체가 그런 이름을 받아들이더라도 Windows 셸과 사용자 인터페이스가 지원하지 않기 때문입니다. 마침표로 시작하는 .temp 같은 이름은 허용됩니다. CON, PRN, AUX, NUL 같은 장치 예약 이름은 파일 이름으로 쓰지 않으며, NUL.txt처럼 확장자를 붙여도 NUL과 같게 취급됩니다.
현재 디렉터리와 상대 경로
실행 중인 프로그램은 기준이 되는 디렉터리 하나를 가지며, 이를 현재 디렉터리라고 부릅니다. 마이크로소프트의 경로 규칙 문서에 따르면 Windows API에서 파일 이름이 \\로 시작하는 UNC 이름, C:\처럼 드라이브 문자와 백슬래시, 백슬래시 하나 가운데 어느 것으로도 시작하지 않으면 현재 디렉터리를 기준으로 한 상대 경로로 해석됩니다. 같은 스크립트라도 어느 디렉터리에서 실행했는지에 따라 상대 경로가 가리키는 파일이 달라집니다.
경로 안의 마침표 하나(.)는 현재 디렉터리, 마침표 둘(..)은 그 위의 부모 디렉터리를 뜻합니다. 같은 문서의 예에서 ..\tmp.txt는 부모 디렉터리에 있는 tmp.txt, ..\..\tmp.txt는 두 단계 위 디렉터리의 파일을 가리킵니다. 드라이브 문자 뒤에 백슬래시가 없는 C:tmp.txt는 C 드라이브의 현재 디렉터리에 있는 tmp.txt를 뜻하고, 그 위치가 루트인지는 그 드라이브에서 마지막으로 디렉터리를 바꾼 작업에 달려 있습니다.
Python 공식 문서의 pathlib 설명에서 Path.cwd()는 os.getcwd()가 돌려주는 현재 디렉터리를 경로 객체로 돌려주고, Path.absolute()는 정규화나 심볼릭 링크 해석 없이 경로를 절대 경로로 만듭니다. pathlib은 foo/./bar의 마침표 하나는 없애지만 foo/../bar의 ..는 남겨 둡니다. foo가 다른 디렉터리를 가리키는 심볼릭 링크라면 ..를 지운 bar는 다른 위치가 되기 때문입니다. 경로를 위로 거슬러 올라가야 할 때 문서는 먼저 Path.resolve()로 심볼릭 링크와 ..를 풀라고 권합니다.
운영체제별 경로 규칙과 디렉터리 생성 조건
대소문자 처리는 파일 시스템과 설정에 따라 다릅니다. 마이크로소프트의 이름 규칙 문서는 대소문자를 구분한다고 가정하지 말고 OSCAR, Oscar, oscar를 같은 이름으로 보라고 하면서, POSIX 호환 파일 시스템은 이들을 서로 다른 이름으로 볼 수 있다고 적습니다. Windows에서 만든 프로젝트를 POSIX 계열 파일 시스템을 쓰는 서버나 컨테이너로 옮기면 대소문자만 다른 디렉터리 이름이 서로 다른 위치를 가리킬 수 있습니다.
Python 공식 문서의 pathlib 설명은 이 차이를 경로 클래스로 나눕니다. PureWindowsPath('foo')와 PureWindowsPath('FOO')는 같은 경로로 비교되고, PurePosixPath('foo')와 PurePosixPath('FOO')는 다른 경로로 비교됩니다. PureWindowsPath('c:/Program Files')를 문자열로 바꾸면 c:\Program Files처럼 Windows의 백슬래시 형식이 나옵니다. 순수 경로 클래스는 운영체제에 접근하지 않으므로 Unix 계열 컴퓨터에서도 Windows 경로를 계산할 수 있습니다.
디렉터리를 만들 때는 상위 디렉터리와 이미 있는 디렉터리를 어떻게 처리할지가 결과를 가릅니다. pathlib 문서의 Path.mkdir()은 기본값 parents=False에서 상위 디렉터리가 없으면 FileNotFoundError, 기본값 exist_ok=False에서 대상 디렉터리가 이미 있으면 FileExistsError를 냅니다. parents=True를 주면 POSIX mkdir -p 명령처럼 빠진 상위 디렉터리를 함께 만듭니다.
관련 용어
디렉터리 (Directory)와 함께 자주 언급되는 개념들입니다. 비슷한 말처럼 보여도 역할과 쓰임은 다를 수 있습니다.
