*nix 파일 시스템이 개행 문자가 포함된 파일 이름을 지원하는 이유는 무엇입니까? [복사]

*nix 파일 시스템이 개행 문자가 포함된 파일 이름을 지원하는 이유는 무엇입니까? [복사]

~에 따르면이 페이지:

Linux의 파일 이름에는 (1) 루트 디렉터리(즉, 다른 모든 디렉터리와 파일이 포함된 디렉터리)의 이름과 디렉터리 구분 기호로 사용하도록 예약된 슬래시( / )를 제외한 모든 문자가 포함될 수 있습니다. (2) Null 문자(텍스트 세그먼트를 종료하는 데 사용됨). 공백은 허용되지만 경우에 따라 이전 소프트웨어와 호환되지 않을 수 있으므로 피하는 것이 가장 좋습니다.

좋습니다. 두 가지 제한 모두 의미가 있습니다. 파일 이름에서 특정 문자를 허용하지 않는 것이 분명히 가능한데 왜 개행을 허용합니까? 내가 아는 한, 그것들의 유일한 용도는스크립트를 복잡하게 만들기. 파일 이름에 개행 문자가 있어야 하는 타당한 이유가 있습니까?

답변1

NUL/지정된 시스템 기능을 갖습니다 . 다른 캐릭터는 그렇지 않습니다.

그것이 그것의 기초입니다. 나머지는 의견, 추측, 역사입니다. 듣기, 읽기 등은 다음과 같은 방식으로만 가능합니다.필러토론이나 논쟁이 아닙니다:

  • 특정 문자를 금지하면 파일 시스템 자체에 복잡성이 추가되며 이는 파일 시스템을 손상시키는 것과 같습니다.
  • 다양한 시스템에서 개행 문자를 구성하는 바이트는 무엇입니까? <CR>그리고 <LF>평등하다
  • 원격 시스템이 NFS에 개행 문자가 포함된 파일을 생성하기로 결정하면 어떻게 됩니까?
  • 파일 이름은 손상되었지만 파일 내용은 손상되지 않은 경우 어떻게 되나요?
  • 응용 프로그램이 파일 이름에 정보를 인코딩하면 어떻게 되나요?

계속하다

  • 사용자 소프트웨어의 버그를 수정하는 것이 시스템의 임무인가요?
  • 시스템은 루트 수준에서 자체적으로 사용자를 보호해야 합니까?
  • 다양한 쉘의 내부 구현에 따라 어떤 파일 이름이 유효한 것으로 간주되는지 결정하면 안 됩니까?

기본 운영 체제에는 설정된 제한이 없습니다. 시스템으로 들어오고 나가는 정보는 바이트 스트림입니다. 바이트에 특별한 의미가 없으면 사용자 공간에서 처리해야 하는 검사를 추가하여 오버헤드를 생성하지 마세요.


어쨌든 가장 큰 문제는 개행 문자와 기타 제어 문자를 허용하는 오랜 역사일 것입니다.

또 다른 상황은 금지되는 것입니다. 줄바꿈을 언급하셨는데 UNIX 석기 시대 토론에서 논란이 되었고 다른 문자도 있습니다. 금지되어야 하는가 *? 로 시작하는 파일 이름은 어떻습니까 -? 그리고 DEL?ESC 모든 제어 캐릭터를 금지해야 합니까? 기타 등등

안타깝게도 창립자나 코드 유지관리자가 이 주제를 언급한 기억이 없습니다.

관련 정보