Linux 파일 명령에 대한 설명서를 읽어보세요. 마법 테스트 설명에서 다음을 발견했습니다.
Any file with some invariant identifier at a small fixed offset into the file
can usually be described in this way. The information identifying these files
is read from /etc/magic and the compiled magic file /usr/share/misc/magic.mgc,
or the files in the directory /usr/share/misc/magic if the compiled file
does not exist. In addition, if $HOME/.magic.mgc or $HOME/.magic exists,
it will be used in preference to the system magic files.
매직 파일이 "MagicNumber -> 파일 종류" 관계의 모음이라고 상상할 수 있습니다. "파일" 프로그램이 실행되어 파일 형식을 찾고 파일 헤더를 얻습니다. 하지만 왜 그런지 이해가 안 돼요.
- 왜 이 파일을 컴파일해야 합니까?
- 명령과 함께 사용할 마법의 컴파일 파일을 만드는 방법이 있습니까?
- 이러한 테스트 및 파일과 관련된 명령 옵션의 사용법은 무엇입니까? 전임자:
-C or -m
.
답변1
- 왜 이 파일을 컴파일해야 합니까?
나는 이것이 성능상의 이유라고 생각합니다. 매직 데이터베이스는작지 않음. 파일은 사람이 읽을 수 있는 각각의 마법 같은 소스 파일을 구문 분석하고, 파일 형식을 감지하기 위한 구조를 구축하고, 각 패턴의 강도를 계산하고 그에 따라 모든 것을 정렬해야 합니다. 이 프로세스는 특히 수십 년 전에는 극도로 느릴 수 있습니다(파일은 1970년대부터 사용되었습니다).
나는 파일이 실행 시 데이터베이스를 구축하고 결과를 캐시하도록 할 수 있다고 생각하지만 사용 사례를 고려하면 완전히 불필요하고 복잡해 보이며 많은 다른 문제를 야기합니다.
- 명령과 함께 사용할 마법의 컴파일 파일을 만드는 방법이 있습니까?
file -m MAGIC_SOURCE -C
그러면 현재 작업 디렉터리와 동일한 기본 이름 MAGIC_SOURCE
과 확장자를 가진 컴파일된 매직 파일이 생성됩니다..mgc
파일이나 디렉터리에서 사용할 수 있습니다. 디렉터리에 후행 슬래시를 사용하지 마세요.
예를 들어 file -m ~/.magic -C
모든 ~/.magic/*
소스 코드를 .magic.mgc
컴파일된 파일로 컴파일합니다.
- 이러한 테스트 및 파일과 관련된 명령 옵션의 사용법은 무엇입니까? 예:
-C
또는-m
.
-C
일부 소스 파일을 컴파일하도록 파일에 지시합니다.
-m
사용할 매직 파일(소스 또는 컴파일)을 파일에 알려줍니다. 예 -C
를 들어 소스 파일을 포함하여 모든 파일을 사용하여 파일 유형을 감지하는 등 의 작업을 수행할 수도 있습니다 .
man file
man magic
이 명령과 매직 소스 파일 구문에 대한 자세한 내용은 참고 자료를 참조하세요.