файл (1) и магия (5): описание других форматов

Могу ли я использовать file и magic ( http://linux.die.net/man/5/magic ), чтобы переопределить описание некоторых других известных форматов?

например, я хотел бы описать следующие форматы:

  • BED: http://genome.ucsc.edu/FAQ/FAQformat.html#format1
  • Фаста: http://en.wikipedia.org/wiki/FASTA_format

которые являются «просто» текстовым файлом

Или

  • BAM http://genome.ucsc.edu/FAQ/FAQformat.html#format5.1

это «просто» gzipped-файл, начинающийся с магического номера BAM\1

?

знаете ли вы какой-нибудь пример?

Можно ли создать собственный код C для проверки файла вместо использования магического формата?

    2 Solutions collect form web for “файл (1) и магия (5): описание других форматов”

    Вы можете использовать опцию -m чтобы указать альтернативный список магических файлов, и если вы включите свой собственный файл перед скомпилированным магическим файлом ( /usr/share/file/magic.mgc в моей системе) в этом списке, эти шаблоны будут проверены перед «глобальными». Вы можете создать функцию или псевдоним, чтобы прозрачно всегда прозрачно использовать эту опцию, просто выдав команду file .

    Язык, используемый в магическом файле, достаточно мощный, поэтому редко приходится возвращаться к пользовательскому кодированию C. Единственный раз, когда я был склонен это сделать, было в 90-е годы, когда сопоставление файлов HTML и XML было затруднительным, потому что не было (в то время) возможности иметь гибкое обхождение корпуса и смещения, необходимое для синтаксического анализа <HTML и < Html и < html с одним шаблоном. Я реализовал это в C как модификатор к шаблону 'string', позволяя игнорировать случай и уплотнять (необязательные) пробелы .

    Эти изменения в C требовали адаптации магических файлов . И если исходный код file значительно не изменился с тех пор, вам всегда нужно будет изменять (или предоставлять дополнительные) правила в magic файлах, которые соответствуют этим изменениям кода C. Поэтому вы можете начать с попытки сделать это с изменениями только в магических файлах и вернуться к изменению кода C, если это действительно не сработает.

    Для следующего пользователя $ (user_searchengine), находящего это:

    Простые правила, такие как BAM, выглядят следующим образом:
    OFFSET TYPE [OPERAND]FLAG MESSAGE
    В случае BAM:
    0 string BAM\1 BAM
    Это будет печатать строку BAM при поиске заголовка.

    Для получения дополнительной информации данные IBM-сайтов выглядят немного устаревшими, но их должно быть достаточно для простых случаев использования. у человека также есть куча информации о формате.

    Interesting Posts

    Как получить код выхода параллельного процесса, запущенного xargs?

    Что я делаю неправильно, пытаясь написать сценарий bash, который возвращает номер следующего доступного порта?

    Рекурсивно применить команду для изменения всех файлов в каталоге

    Скриншот непрямоугольного расширенного рабочего стола

    Что означают данные «smbclient» самбы?

    перепутал РЕПО в RHEL6

    Как я могу выйти из режима только для чтения в Vim?

    адрес источника, выбранный в случае нескольких адресов IPv4

    Инструменты для использования дыры196

    Отобразить недопустимые пути к допустимым путям файлов

    glib-ошибки на cygwin

    Почему zsh и ksh93 решили быть несоответствующими при сопоставлении с образцом?

    Проблема с командой установки для копирования всего каталога

    Рекурсивный wget в конечном итоге начинает работать с ошибкой «Невозможно разрешить хост» / «Временный сбой при разрешении имен»

    Почему использование `yes` на bash-конвейерах * не * вызывает бесконечные циклы?

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