
이번 주에 시험이 있었는데, 질문 중 하나는 다음과 같습니다(정답은 1개임).
파일 이름에는 다음 문자가 포함될 수 있습니다.
ㅏ)
\
비)
/
씨)
?
디)
!
c) ?
괜찮을 것 같아서 선택했어요 . 집에 와서 내 컴퓨터(Ubuntu 14.04)에서 테스트했는데 파일이 성공적으로 생성되었습니다. Ready Reckoner에서 정답은 으로 표시됩니다 d) !
.
시험이 Windows에만 국한된다는 것을 알고 있었지만 시험지에는 플랫폼이 지정되어 있지 않았습니다.
파일 이름에 \
및 문자가 지원되지 않는 것이 분명합니다 ./
하지만운영 체제에서 강제로 허용하도록 하는 방법이 있나요?
\
짝수 와 /
문자가 지원된다는 것을 증명하면 정말 멋질 것입니다 .
답변1
파일 이름에 허용되는 문자를 고려할 때 운영 체제와 관련된 제한 사항과 파일 시스템과 관련된 제한 사항이라는 두 가지 제한 요소가 있습니다. 이 질문에서는 최신 버전의 Linux 및 ext4에 대해 이야기하고 있다고 가정합니다.
Linux에서는 파일 이름에 두 문자만 허용하지 않습니다. /
는 경로 구분 기호이기 때문이고 \0
(ASCII NUL)은 cstring을 끝내기 때문입니다. 이 외에도 특수 이름 .
및 ..
는 탐색 하드 링크로 사용하기 위해 파일 시스템에 예약되어 있습니다.
질문에 언급된 다른 문자가 허용된다는 것을 쉽게 보여줄 수 있습니다.
$ touch '\' '?' '!'
$ ls
! ? \