Как “файл - контур текста пантомимы” работает на файл, который не имеет никакого расширения

Для нахождения, файлы имитируют тип, который мы не знаем, что будем использовать команду файла с - аргумент типа пантомимы. Мы знаем, что это показывает результаты на основе данного расширения путей к файлам (такой как text/x-python для *.py). Список об отношении между расширением и типом пантомимы был бы сохранен где-нибудь, такие как/etc/mime.type или в/usr/share/mime/glob. Но что относительно файлов, который не имеет никаких расширений? Как мы могли найти тип пантомимы? Объясните. Мы можем сделать то же самое с помощью Python?

0
задан 8 April 2020 в 19:39

1 ответ

Расширения главным образом не важны в системах Linux. В отличие от Windows, подавляющее большинство инструментов Linux не полагается на расширение вообще. Например:

$ cat script.py
#!/usr/bin/python
print("Works!")
$ chmod 777 script.py 
$ ./script.py 
Works!

Теперь, с другим расширением:

$ mv script.py script.foo
$ ./script.foo 
Works!

Так, забудьте о расширениях. Они очень редко релевантны и file не использует их. Взгляните на man file (читайте man file, это - только часть информации там):

файл тестирует каждый аргумент в попытке классифицировать его. Существует три набора тестов, выполненных в этом порядке: тесты файловой системы, волшебные тесты и тесты языка. Первый тест, который успешно выполняется, заставляет тип файла быть распечатанным.

Тесты файловой системы основаны на исследовании возврата из статистики (2) системный вызов. Проверки программы, чтобы видеть, пуст ли файл, или если это - своего рода специальный файл. Любые известные типы файлов, соответствующие системе, на которой Вы работаете (сокеты, символьные ссылки или именованные каналы (FIFOs) в тех системах, которые реализуют их), постигнуты интуитивно, если они определяются в системном заголовочном файле.

Волшебные тесты используются для проверки на файлы с данными в особенности фиксированных форматов. Каноническим примером этого является двоичный исполняемый файл (скомпилированная программа) a.out файл, формат которого определяется в, и возможно в стандарте включают каталог. Этим файлам сохранили “магическое число” в конкретном месте около начала

Если файл не соответствует ни одной из записей в волшебном файле, он исследован, чтобы видеть, кажется ли это, текстовый файл. ASCII, ISO-8859-x, не-ISO, 8-разрядные наборы символов расширенного ASCII (такие как используемые в системах Macintosh и IBM PC), UTF-8-encoded Unicode, UTF-16-encoded Unicode и наборы символов EBCDIC могут отличить различные диапазоны и последовательности байтов, которые составляют печатаемый текст в каждом наборе. Если файл проходит какой-либо из этих тестов, о его наборе символов сообщают.

После того как файл определил набор символов, используемый в файле типа текста, он попытается определить, в каком языке записан файл. LAN ‐ guage тесты ищет конкретные строки (cf). это может появиться где угодно в первых нескольких блоках файла. Например, ключевое слово .br указывает, что файл наиболее вероятен troff (1) входной файл, так же, как структура ключевого слова указывает на программу C. Эти тесты менее надежны, чем предыдущие две группы, таким образом, они выполняются в последний раз. Тестовые задачи языка также тестируют на некоторые вспомогательные операции (такие как tar (1) архивы, файлы JSON).

2
ответ дан 25 April 2020 в 10:52

Другие вопросы по тегам:

Похожие вопросы: