file 명령에서 "마법 테스트"는 무엇을 의미합니까?

file 명령에서 "마법 테스트"는 무엇을 의미합니까?

명령 에 대해 읽다 file가 잘 이해되지 않는 내용을 발견했습니다.

file은 쿼리되는 파일의 종류를 결정하도록 설계되었습니다.... file은 다음을 수행하여 이를 수행합니다.문제의 파일에 대한 테스트 세트:

  • 파일 시스템 테스트,
  • 마법테스트,
  • 언어 테스트

무엇인가마법테스트?

답변1

여기서 '마법'은 '마법'을 뜻합니다.매직넘버": 해당 유형을 식별하는 파일의 알려진 위치에 있는 특수 값입니다. 명령에는 file이러한 숫자와 해당 유형에 대한 데이터베이스가 있습니다. 해당 데이터베이스와 함께 제공되는 라이브러리를 호출합니다.libmagic, 자신의 프로그램에서 액세스할 수 있습니다.

우리가 생각하는 것처럼 반드시 "숫자"일 필요는 없습니다. 예를 들어, PNG 이미지 파일은 항상 "\x89PNG\r\n\x1a\n"으로 시작하고, Java 클래스는 4바이트(16진수) CA FE BA BE로 시작하며, HTML 파일의 어딘가에는 "< html"이 있습니다. 시작 근처. 해당 유형의 파일에 있는 것으로 알려진 작은 데이터 시퀀스일 뿐이며 일반적으로 시작 부분에 매우 가깝습니다.

사람들이 파일 형식을 정의할 때 의도적으로 또는 형식을 서로 맞추는 과정의 일부로 이러한 형식 중 하나를 포함하는 경우가 많습니다. file나중에 사용할 수 있습니다. 또한 실제로 파일의 내용을 보고 그것이 무엇인지 추측하는 다른 방법도 있습니다("언어 테스트").

답변2

이는 많은 파일 형식이 파일 시작 부분에 있는 "매직 바이트"를 말하며 이것이 어떤 종류의 파일인지 보여줍니다.

예를 들어 파일이 #!다음으로 시작하면 스크립트로 간주됩니다.

관련 정보