파일 이름

컴퓨터 파일 시스템에 저장된 파일 구별을 위한 특별한 종류의 문자열

파일 이름(영어: filename or file name) 또는 파일명(file名)은 특별한 종류의 문자열이며 컴퓨터의 파일 시스템에서 저장된 파일을 구별하기 위해 사용된다. 운영 체제에 따라서 그러한 이름이 디렉터리로 인식될 수도 있다. 다른 운영 체제들은 파일 이름에 길이를 제한하거나 어떠한 문자열들을 허용하지 않을 수 있다. 또, 파일 시스템과 운영 체제에 따라 파일 이름의 대소문자를 구분하거나 구분하지 않을 수도 있다. 이를테면, 옛 MS-DOS 버전들은 8글자의 이름과 3글자의 확장자만을 지원하였으나, MS-DOS 7.x 이후부터는 255자의 긴 파일 이름을 지원한다.

디렉터리 안에 들어 있는 파일의 이름을 보여 주는 윈도우 명령 셸.

파일 이름은 다음과 같이 이루어져 있다.

  • 프로토콜 - 접근 방식 (이를테면 http, ftp, file 등)
  • 호스트 (네트워크 ID) - 호스트 이름, IP 주소, 도메인 이름, LAN 네트워크 이름 (이를테면 wikipedia.org, 207.142.131.206, \\MYCOMPUTER, SYS 등)
  • 장치 (노드) - 포트, 소켓, 드라이브, 루트 마운트지점, 디스크, 볼륨 (이를테면 C:, /, SYSLIB 등)
  • 파일 - 기본 파일 이름
  • 형식(포맷 또는 확장자) - 파일의 내용 형식을 가리키는 것 (이를테면 .txt, .exe, .dir 등)
  • 버전 - 파일의 버전 번호

사용할 수 없는 기호와 문자 편집

수많은 운영 체제는 파일 이름에 들어가는 문자에 제어 문자를 사용할 수 없게 하고 있다. 이를테면 도스와 초기 윈도 시스템은 8.3 파일 이름 변환을 따를 것을 요구한다. 유닉스 계열 운영 체제는 예외인데 파일 이름이 들어갈 수 없는 금칙 제어 문자가 null 문자이다. 이는 C에서 문자열 끝을 알리는 지시자이기 때문이다. 또, 유닉스에서는 파일 이름에 경로를 나타내는 /를 사용할 수 없다.

일부 운영 체제는 파일 이름에 나타나는 다음의 특별한 문자를 사용하지 못하게 하고 있다:

문자 이름 이유
/ 슬래시 유닉스 계열, 윈도, 아미가 시스템에서 경로 이름을 이루는 요소로 이용하므로 사용할 수 없다. (MS-DOS의 command.com 셸은 스위치 문자로 사용할 수 있지만 윈도 자체는 언제나 이를 구분자로 사용한다.[1]
\ 백슬래시 이 또한 MS-DOS, OS/2, 윈도우에서 경로 이름을 이루는 요소로 이용하므로 사용할 수 없다. (슬래시와 백슬래시와의 차이는 없다. 다만 유닉스 파일 이름에서는 이를 사용할 수 있다. 아래의 참고 1을 볼 것.)
? 물음표 유닉스, 윈도, 아미가OS에서 특수 문자로 취급하며 한 글자라는 뜻으로 이용하므로 사용할 수 없다. 유닉스 파일 이름에서는 이를 사용할 수 있다.
% 퍼센트 기호 RT-11에서 특수 문자로 취급하며 한 글자라는 뜻으로 이용하므로 사용할 수 없다.
* 별표 유닉스, MS-DOS, RT-11. VMS, 윈도우에서 특수 문자로 취급한다. 유닉스, 윈도, 후반 버전의 MS-DOS에서 연속된 문자임을 나타내거나 기반 이름 및 확장자의 연속된 문자라는 뜻으로 이용한다. (그러므로 초기 버전의 MS-DOS에서 "*.*"는 "모든 파일"을 뜻한다. 유닉스의 파일 이름에서는 사용할 수 있다.)
: 콜론 윈도의 마운트 포인트 / 드라이브를 결정하는 데 사용한다. 아미가OS, RT-11, VMS에서 드라이브와 같은 물리 장치나 가상 장치를 결정하는 데 쓰인다. 고전 맥 OS에서 경로 이름을 구분하는 데 사용한다. VMS의 이름 뒤에 두 개의 콜론이 놓이면 DECnet 노드이름임을 나타낸다. (이는 넷바이오스 (윈도 네트워킹) 호스트 이름의 \\와 일치한다.)
| 수직 막대 유닉스와 윈도우에서 소프트웨어 파이프라인화를 가리킨다. 유닉스 파일 이름에는 사용할 수 있다.
" 인용 부호 윈도우에서 파일 이름에 공백을 포함할 때 파일 이름의 시작과 끝을 알려 주는 데 사용한다.
< 보다 작다 기호 리디렉션하는 데 사용한다. 유닉스 파일 이름에서는 사용할 수 있다.
> 보다 크다 기호 리디렉션하는 데 사용한다. 유닉스 파일 이름에서는 사용할 수 있다.
. 온점 VMS, MS-DOS, 윈도의 확장 구분자로 해석할 수 있다. 다른 운영 체제에서 파일 이름의 일부로 인식할 수도 있으며 이 때 하나 이상의 온점도 허용할 수 있다.

참고 1: 대부분의 유닉스 셸은 인용하거나 빠져나가기 위하여 특정한 문자를 요구한다: 공백, <, >, |, \, 또 가끔은 :, (, ), &, ;, 및 ?, *와 같은 특수 문자

five\ and\ six\<seven (빠져나가는 예)
'five and six<seven' or "five and six<seven" (인용의 예)

윈도우에서 공백과 온점은 파일 이름의 마지막에 허용하지 않는다. 온점은 파일 이름의 처음에는 허용하지만 윈도우 탐색기와 같은 일부 윈도 응용 프로그램은 이러한 파일의 이름을 만들거나 이름을 바꾸는 것을 금지한다. (유닉스 계열 운영 체제에서는 숨김 파일 및 디렉터리를 기술하는 데 사용하는 변환이기는 하다) 해결책으로 다른 응용 프로그램을 이용하거나 어느 응용 프로그램 안에서 원하는 파일 이름으로 파일을 저장하는 방법이 있다.[2]

일부 운영 체제 파일 시스템(특히 다른 운영 체제에 원래 추가된 파일 시스템)은 해당 운영 체제의 특정한 응용 프로그램들은 더 많은 제한을 받기도 하고 더 많은 해석을 하기도 한다.

유닉스 계열 운영 체제, MS-DOS, 윈도우에서 파일 이름 "."와 ".."는 특별한 의미가 있다. (각각 현재 및 부모 디렉터리).

그뿐 아니라 윈도와 도스에서 일부 글자는 파일 이름으로 금지되어 사용할 수 없다.[2] 이를테면 도스 장치 파일이 그러하다:

CON, PRN, AUX, CLOCK$, NUL
COM0, COM1, COM2, COM3, COM4, COM5, COM6, COM7, COM8, COM9
LPT0, LPT1, LPT2, LPT3, LPT4, LPT5, LPT6, LPT7, LPT8, and LPT9.

이러한 제한이 있는 운영 체제들은 다른 일부 파일 시스템과 호환되지 않는 경향이 있다. 이를테면 윈도는 유효한 유닉스 파일 이름인 aux.c, q"uote"s.txt, NUL.txt와 같은 것들을 다루는 데 실패하거나 오류를 보고하기도 한다.

파일 이름의 제한 비교 편집

시스템 대소문자 구별 허용 문자 집합 금칙 문자 금칙 단어 최대 길이
MS-DOS FAT 대소문자 구별 안 함 / 구별된 대소문자 보존 안 함 모두 0x00-0x1F SPACE DEL " * / : < > ? {{backslash}} | 장치 이름: AUX COM1 COM2 COM3 COM4 COM5 COM6 COM7 COM8 COM9 CON LPT1 LPT2 LPT3 LPT4 LPT5 LPT6 LPT7 LPT8 LPT9 NUL PRN 11
코모도어 64 대소문자 구별함 / 구별된 대소문자 보존 모두 :,= $ 16
Win95 VFAT 대소문자 구별 안 함 모두 |\?*<":>+[]/ 제어 문자 255
NTFS 선택 사항 (구별된 대소문자 보존) 모두 (유니코드 문자 포함) / null (이를테면 0x00) 루트 디렉터리만:  $AttrDef $BadClus $Bitmap $Boot $LogFile $MFT $MFTMirr pagefile.sys $Secure $UpCase $Volume $Extend $Extend\$ObjId $Extend\$Quota $Extend\$Reparse ($Extend는 디렉터리) 255
OS/2 HPFS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 |\?*<":>/ 254
맥 OS HFS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 : 255
맥 OS HFS+ 선택 사항 (구별된 대소문자 보존) 모두 : 디스크, 고전 맥 OS, OS X의 카본 계층에서 / OS X 유닉스 계층에서 255
대부분의 유닉스 파일 시스템 대소문자 구별함 / 구별된 대소문자 보존 모두 / null 255
초기 UNIX (AT&T) 대소문자 구별함 / 구별된 대소문자 보존 모두 / 14
POSIX "완전히 이식 가능한 파일 이름"[3] 대소문자 구별함 / 구별된 대소문자 보존 A–Za–z0–9._- / null 다음을 포함하지 않는 파일 이름: a.out, core, .profile, .history, .cshrc 14
아미가OS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 :/" 107
아미가 OFS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 :/" 30
아미가 FFS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 :/" 30
아미가 PFS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 :/" 255
아미가 SFS 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 :/" 32,000
아미가 FFS2 대소문자 구별 안 함 / 구별된 대소문자 보존 모두 :/" 107
BeOS BFS 대소문자 구별함 UTF-8 / 255
DEC PDP-11 RT-11 대소문자 구별 안 함 RADIX-50 6 + 3
DEC VAX VMS 대소문자 구별 안 함 A–Z 0–9 $ - _ 한 요소에 32개. 초기에는 9개로 제한되었으나 나중에는 파일 이름의 경우 255개, 확장자의 경우 32개로 늘어남.
ISO 9660 대소문자 구별 안 함 A–Z 0–9 _ . 255

각주 편집

  1. “When did Windows start accepting forward slash as a path separator? - Python answers”. Thescripts.com. 2005년 7월 18일. 2010년 8월 20일에 확인함. 
  2. Naming a file msdn.microsoft.com (MSDN), filename restrictions on Windows
  3. Lewine, Donald. POSIX Programmer's Guide: Writing Portable UNIX Programs 1991 O'Reilly & Associates, Inc. Sebastopol, CA pp63-64

같이 보기 편집

외부 링크 편집