요약:
- Windows : ASCII 제어 문자 및
\/:*?"<>|
- Linux, OS-X : null 또는
/
모든 플랫폼에서 ASCII 제어 문자와 같은 인쇄 할 수없는 문자를 사용하지 않는 것이 가장 좋습니다.
윈도우
Windows에서 Windows 탐색기는 제어 문자를 허용하지 않거나 \/:*?"<>|
공백을 사용할 수 있습니다. 공백을 사용하면 명령 줄에서 사용할 때 파일 이름을 인용 해야하는 경우가 있습니다 (그러나 GUI 응용 프로그램은 내가 아는 한 영향을받지 않습니다). NTFS와 같은 Windows 파일 시스템은 파일 이름으로 인코딩을 저장하지만 UTF-16이 표준입니다.
Windows의 일부 부분은 대소 문자를 구분하고 다른 부분은 대소 문자를 구분하지 않습니다. Windows NTFS 파일 시스템에서 "Ab"및 "ab"와 같은 고유 한 파일 이름을 쉽게 만들 수 있습니다. 이러한 이름은 별개의 개별 컨텐츠를 포함하는 별도의 파일을 나타냅니다. 그러나 Windows 명령 프롬프트는을 사용하여 두 파일을 모두 행복하게 나열하지만, 같은 명령을 사용하여 두 파일 dir
중 하나에 쉽게 액세스하거나 조작 할 수는 없습니다 type
. 아래를 참조하십시오.
리눅스, OS-X
Linux 및 OS-X /
에서는 인쇄 가능한 ASCII 세트 만 금지됩니다. 일부 문자 (와 같은 셸 메타 문자 *?!
)는 명령 행에서 문제를 일으키며 파일 이름을 적절히 인용하거나 이스케이프해야합니다.
ext2, ext3과 같은 Linux 파일 시스템은 문자 집합에 구애받지 않습니다 (문자열을 바이트 스트림으로 처리한다고 생각합니다-null 만 /
허용되며 금지됩니다). 즉, 파일 이름을 UTF-8 인코딩으로 저장할 수 있습니다. 표시 또는 처리를 위해 파일 이름을 올바르게 변환하는 데 사용할 인코딩을 아는 것은 셸 또는 다른 응용 프로그램에 달려 있다고 생각합니다.
결론
그래서 당신은 아마 안전한 것을 사용할 수 있습니다 ✣
(입력하기가 어렵지 않은 경우)
Windows의 대소 문자 구분
C> dir /B
Ab
aB
аB
C> type Ab
b
b
C> type aB
b
b
C> type аB
unicode homograph
두 번째 파일의 내용을 입력 할 수 없으며 Windows type
명령은 Ab의 내용을 대신 반환합니다. 세 번째 파일은 Linux의 aB 와도 다릅니다.
(Windows 10 NTFS).