Что означает «магические тесты» для команды файла?

Я читал о file команде, и я наткнулся на то, что я не совсем понял:

файл предназначен для определения типа запрашиваемого файла …. файл выполняет это, выполняя три набора тестов в рассматриваемом файле:

  • тесты файловой системы,
  • магические тесты,
  • языковые тесты

Что такое магические тесты?

    2 Solutions collect form web for “Что означает «магические тесты» для команды файла?”

    Это относится к «волшебным байтам», которые многие форматы файлов имеют в начале файла, которые показывают, какой файл это.

    Например, если файл начинается с #! то он считается сценарием.

    «magic» здесь означает « магические числа »: специальное значение, которое находится в известном месте в файле, который идентифицирует его тип. Команда file имеет базу данных этих чисел и какой тип они соответствуют. Библиотека, которая идет с этой базой данных, называется libmagic , и вы можете получить доступ к ней из своих собственных программ.

    Они не обязательно «цифры», как мы могли бы подумать о них. Например, файл изображения PNG всегда начинается с «\ x89PNG \ r \ n \ x1a \ n», класс Java начинается с четырех байтов (в шестнадцатеричном) CA FE BA BE, а в HTML-файле «<html» где-то рядом с началом. Это всего лишь небольшая последовательность данных, которая, как известно, находится в файле такого типа, как правило, очень близка к началу.

    Когда люди определяют форматы файлов, они часто включают в себя одно из них в нем либо намеренно, либо просто как часть согласования формата. file может использовать их впоследствии. У него также есть другие способы фактического просмотра содержимого файла, чтобы догадаться, что это («языковые тесты»).

    Interesting Posts

    (cp для cat AS mv для?) mv несколько файлов в один файл вместо cat * rm *

    Мой ноутбук выключается при каждом отключении

    Почему моя машина не нуждается в пароле при пробуждении из спящего режима?

    Как написать домашнему пользователю с chrooted sftp

    Найти только сообщения от symlink

    Как я могу обнаружить ошибки памяти, если у меня нет корневого или физического доступа к системе Linux?

    Базовое имя дает дополнительную ошибку операнда

    Простейшая возможная защищенная песочница (необходимы ограниченные ресурсы)

    Шлюз Linux: как маршрутизировать NAT-соединения с использованием LAN через туннель OpenVPN?

    Связывание ключа Vim для циклического перехода через окна

    Как печатать быстрые клавиши в форме для человека?

    Как установить динамическое сообщение дня (motd) в Debian Jessie 8.2 для ssh?

    Как использовать Dual-Dual-Boot?

    В чем разница между одинарной кавычкой $ 'string' и двойной строкой $ "string" в bash?

    awk обрабатывать очень большой файл

    Linux и Unix - лучшая ОС в мире.