파일 이름에 임의의 문자를 삽입할 수 있도록 시스템을 강제 실행

파일 이름에 임의의 문자를 삽입할 수 있도록 시스템을 강제 실행

이번 주에 시험이 있었는데, 질문 중 하나는 다음과 같습니다(정답은 1개임).

파일 이름에는 다음 문자가 포함될 수 있습니다.

ㅏ)\

비)/

씨)?

디)!

c) ?괜찮을 것 같아서 선택했어요 . 집에 와서 내 컴퓨터(Ubuntu 14.04)에서 테스트했는데 파일이 성공적으로 생성되었습니다. Ready Reckoner에서 정답은 으로 표시됩니다 d) !.

시험이 Windows에만 국한된다는 것을 알고 있었지만 시험지에는 플랫폼이 지정되어 있지 않았습니다.


파일 이름에 \및 문자가 지원되지 않는 것이 분명합니다 ./하지만운영 체제에서 강제로 허용하도록 하는 방법이 있나요?

\짝수 와 /문자가 지원된다는 것을 증명하면 정말 멋질 것입니다 .

답변1

파일 이름에 허용되는 문자를 고려할 때 운영 체제와 관련된 제한 사항과 파일 시스템과 관련된 제한 사항이라는 두 가지 제한 요소가 있습니다. 이 질문에서는 최신 버전의 Linux 및 ext4에 대해 이야기하고 있다고 가정합니다.

Linux에서는 파일 이름에 두 문자만 허용하지 않습니다. /는 경로 구분 기호이기 때문이고 \0(ASCII NUL)은 cstring을 끝내기 때문입니다. 이 외에도 특수 이름 ...는 탐색 하드 링크로 사용하기 위해 파일 시스템에 예약되어 있습니다.

질문에 언급된 다른 문자가 허용된다는 것을 쉽게 보여줄 수 있습니다.

$ touch '\' '?' '!'
$ ls
!  ?  \

관련 정보