파일 이름의 줄 바꿈 문자

파일 이름의 줄 바꿈 문자

나는 방어적인 쉘 스크립팅이 신중하고 장기적으로 더 지속 가능하다는 전제를 이해하고 받아들입니다 .

여기에 있는 텍스트 처리 질문에 대한 대부분의 답변은 이 원칙을 따르며, 공백, 대시 및 줄바꿈이 포함될 수 있는 비정통적인 파일 이름에 대한 우연성을 포함합니다.

파일 이름에 새 줄이 얼마나 자주 사용됩니까? 구체적으로:

  • 기본적으로 개행 문자가 포함된 파일 이름을 생성하는 응용 프로그램이 있습니까?
  • 그러한 파일 이름을 만들어야 하는 상황이 있습니까?
  • 아니면 주로 사용자 오류의 예입니까?

[1] 가능한 가장 광범위한 시나리오와 비상 상황을 계획하고 관리하는 것을 의미합니다.

(다소 슬픈) 댓글에서 영감을 얻은 질문이 문제.

답변1

파일 이름을 조작하는 테스트 응용 프로그램을 위해 특별히 만들어진 파일 이름이 아닌 이상 개행 문자가 포함된 파일 이름을 본 적이 없습니다. 줄바꿈이 포함된 파일 이름은 다음과 같은 이유로 발생할 수 있습니다.

  • 일부 버그 또는 사용자 오류(예: 잘못된 복사-붙여넣기)로 인해 예기치 않은 파일 이름이 발생했습니다.
  • 일부 파일 시스템 손상은 파일 이름에 영향을 미칩니다.
  • 누군가 보안 취약점을 이용하기 위해 의도적으로 "이상한" 파일 이름을 만듭니다. 여기서 응용 프로그램은 전달된 파일 이름을 필요한 것보다 더 신뢰합니다.

POSIX는 다음을 정의합니다.파일 이름"파일 이름을 지정하는 데 사용되는 1~{NAME_MAX}바이트로 구성된 이름입니다. 이름을 구성하는 문자는 슬래시 문자와 널 바이트를 제외한 모든 문자 값 집합에서 선택할 수 있습니다. 파일 이름 "dot" "점-점"은 특별한 의미를 갖습니다. "모든 파일 시스템이 "이상한" 파일 이름(고유)을 허용한다는 보장은 없습니다.보장하다캐릭터는ASCII 문자, 숫자, 마침표, 하이픈 및 밑줄, 즉 A-Z, a-z, 0-9._-, 하이픈은 첫 번째 위치에 표시되는 것이 금지되어 있지만 최신 unice의 대부분의 기본 파일 시스템은 이를 수행합니다.

답변2

저는 논문을 작성할 때 다양한 출처에서 PDF 파일의 참고문헌을 수집하는 경우가 많습니다. 이들 모두가 올바른 메타데이터를 포함하는 것은 아닙니다. 즉, 가끔 PDF 뷰어의 논문 제목을 파일 이름에 복사하여 붙여넣는 경우가 있습니다. 이로 인해 일반적으로 파일 이름에 줄 바꿈이 발생하지만 제가 사용한 도구에서는 문제가 되지 않았습니다.

IMHO, 표준에 따른 코딩에 대해 "방어적인" 것은 없습니다. 이 표준은 파일 이름에 줄바꿈이 허용되도록 지정합니다. 스크립트가 표준에서 허용되는 모든 파일 이름을 처리할 수 없으면 스크립트가 손상된 것입니다.

답변3

일반 사용자가 파일 이름에 개행 문자를 사용하는 것을 본 적이 없습니다. 주요 목적은 (1) 공격자가 시스템을 더 쉽게 파괴하도록 하고 (2) 보안 프로그램을 작성하기 어렵게 만드는 것 같습니다. :-(. 그러나 최신 Unix 계열 시스템(예: Linux)에서는 허용됩니다. 따라서 공격에 강한 프로그램을 원한다면 이에 대비해야 합니다.

"셸의 파일 이름과 경로 이름: 올바르게 얻는 방법"이 문제를 올바르게 처리하는 방법을 보여줍니다.

관련 정보