답변:
여기서 "매직"은 " 매직 넘버 "를 나타냅니다 . 파일에서 파일의 알려진 유형에 해당하는 특별한 값입니다. file
명령은이 숫자의 데이터베이스를 가지고 있으며, 그들이에 해당하는 입력 한 내용. 해당 데이터베이스와 함께 제공되는 라이브러리는 libmagic 이며, 자신의 프로그램에서 액세스 할 수 있습니다.
우리가 생각할 수 있듯이 반드시 "숫자"인 것은 아닙니다. 예를 들어 PNG 이미지 파일은 항상 "\ x89PNG \ r \ n \ x1a \ n"으로 시작하고 Java 클래스는 4 바이트 (16 진) CA FE BA BE로 시작하며 HTML 파일의 어딘가에는 "< 시작 근처. 그것은 일반적으로 시작에 매우 가까운 해당 유형의 파일에있는 것으로 알려진 작은 일련의 데이터입니다.
사람들이 파일 형식을 정의 할 때 형식 중 하나를 의도적으로 또는 형식을 맞추기위한 일부로 포함하는 경우가 종종 있습니다. file
나중에 사용할 수 있습니다. 또한 실제로 파일 내용을보고 파일 내용을 추측하는 다른 방법 ( "언어 테스트")이 있습니다.
#!
커널 자체는 해당 바이트를보고 다음 명령을 호출해야하기 때문에 실제로 이것의 예입니다.