~에 따르면이 페이지:
Linux의 파일 이름에는 (1) 루트 디렉터리(즉, 다른 모든 디렉터리와 파일이 포함된 디렉터리)의 이름과 디렉터리 구분 기호로 사용하도록 예약된 슬래시( / )를 제외한 모든 문자가 포함될 수 있습니다. (2) Null 문자(텍스트 세그먼트를 종료하는 데 사용됨). 공백은 허용되지만 경우에 따라 이전 소프트웨어와 호환되지 않을 수 있으므로 피하는 것이 가장 좋습니다.
좋습니다. 두 가지 제한 모두 의미가 있습니다. 파일 이름에서 특정 문자를 허용하지 않는 것이 분명히 가능한데 왜 개행을 허용합니까? 내가 아는 한, 그것들의 유일한 용도는스크립트를 복잡하게 만들기. 파일 이름에 개행 문자가 있어야 하는 타당한 이유가 있습니까?
답변1
NUL
/
지정된 시스템 기능을 갖습니다 . 다른 캐릭터는 그렇지 않습니다.
그것이 그것의 기초입니다. 나머지는 의견, 추측, 역사입니다. 듣기, 읽기 등은 다음과 같은 방식으로만 가능합니다.필러토론이나 논쟁이 아닙니다:
- 특정 문자를 금지하면 파일 시스템 자체에 복잡성이 추가되며 이는 파일 시스템을 손상시키는 것과 같습니다.
- 다양한 시스템에서 개행 문자를 구성하는 바이트는 무엇입니까?
<CR>
그리고<LF>
평등하다 - 원격 시스템이 NFS에 개행 문자가 포함된 파일을 생성하기로 결정하면 어떻게 됩니까?
- 파일 이름은 손상되었지만 파일 내용은 손상되지 않은 경우 어떻게 되나요?
- 응용 프로그램이 파일 이름에 정보를 인코딩하면 어떻게 되나요?
계속하다
- 사용자 소프트웨어의 버그를 수정하는 것이 시스템의 임무인가요?
- 시스템은 루트 수준에서 자체적으로 사용자를 보호해야 합니까?
- 다양한 쉘의 내부 구현에 따라 어떤 파일 이름이 유효한 것으로 간주되는지 결정하면 안 됩니까?
기본 운영 체제에는 설정된 제한이 없습니다. 시스템으로 들어오고 나가는 정보는 바이트 스트림입니다. 바이트에 특별한 의미가 없으면 사용자 공간에서 처리해야 하는 검사를 추가하여 오버헤드를 생성하지 마세요.
어쨌든 가장 큰 문제는 개행 문자와 기타 제어 문자를 허용하는 오랜 역사일 것입니다.
또 다른 상황은 금지되는 것입니다. 줄바꿈을 언급하셨는데 UNIX 석기 시대 토론에서 논란이 되었고 다른 문자도 있습니다. 금지되어야 하는가 *
? 로 시작하는 파일 이름은 어떻습니까 -
? 그리고 DEL
?ESC
모든 제어 캐릭터를 금지해야 합니까? 기타 등등
안타깝게도 창립자나 코드 유지관리자가 이 주제를 언급한 기억이 없습니다.