Файлы классификации команды файла Linux

на каждом хосте у них должны быть, по крайней мере, свое имя хоста и соответствующая запись в/etc/hosts с их IP в соответствующей сети, нет? ^^ Вы только показываете 127.0.0.1 там, и "localhost" имя хоста... Таким образом, как это может знать, что это - также часть 192.whatever сеть и должно поэтому смочь проверить с помощью ping-запросов все другие хосты на там? Другими словами: просто отредактируйте файл hosts и добавьте строку с:

10.45.89.xxx  st852.demolotus.com

причем xxx является последней цифрой IP st852.demolotus.com в 10.45.89. Подсеть X/24

17
20.08.2014, 23:42
4 ответа

файл использует несколько видов теста :

1: Если файл не существует, не может быть прочитан или его статус файла не может быть определен, в выводе будет указано что файл был обработан, но его тип не может быть определен.

Это будет выглядеть как невозможно открыть файл: нет такого файла или каталога .

2: Если файл не является обычным файлом, его тип файла должен быть идентифицирован. Каталог типов файлов, FIFO, сокет, специальный блок и специальный символ должны быть идентифицированы как таковые. Также могут быть идентифицированы другие типы файлов, определяемые реализацией. Если файл является символической ссылкой, по умолчанию ссылка должна быть разрешена, и файл должен проверить тип файла, на который ссылается символическая ссылка. (См. Параметры -h и -i ниже.)

Будет выведено как .: каталог и / dev / sda: блок специальный . Большая часть формата для этого и предыдущего пункта частично определена POSIX - вы можете полагаться на определенные строки в выводе.

3: Если длина файла равна нулю, он должен быть идентифицирован как пустой файл.

Это foo: empty .

4: Файловая утилита должна проверить начальный сегмент файла и сделать предположение при идентификации его содержимого на основе тестов, чувствительных к положению. (Правильный ответ не гарантируется; см. Параметры -d, -M и -m ниже.)

5: Файловая утилита должна проверить файл и сделать предположение при идентификации его содержимого на основе контекстно-зависимого значения по умолчанию. системные тесты. (Ответ не гарантируется, чтобы быть правильным.)

Эти двое используют идентификацию магическое число и являются наиболее интересной частью команды. Магическое число - это особая последовательность байтов, которая находится в известном месте в файле и определяет его тип. Традиционно этим местом являются первые два байта, но этот термин был расширен и теперь включает более длинные строки и другие места. См. этот другой вопрос для получения более подробной информации о магических числах в команде файла .

Команда файл содержит базу данных этих номеров и того, какому типу они соответствуют; эта база данных обычно находится в / usr / share / mime / magic и сопоставляет содержимое файла с типами MIME . Результатом там (часто является частью файла -i , если вы не получаете его по умолчанию) будет определенный тип носителя или расширение. «Контекстно-зависимые тесты» используют тот же подход, но немного более расплывчатый. Ни один из этих вариантов не может быть верным, но они предназначены для правильных предположений.

файл также имеет базу данных, сопоставляющую эти типы с именами, благодаря чему он будет знать, что файл, который он идентифицировал как application / pdf , можно описать как PDF-документ ]. Эти удобочитаемые имена также могут быть переведены на другой язык. Это всегда будет некое высокоуровневое описание типа файла, понятное человеку, а не машине.

Большинство различных результатов, которые вы можете получить, будут получены на этих этапах. Вы можете посмотреть в файле magic список поддерживаемых типов и способы их определения - моя система знает 376 различных типов. Приведенные имена и поддерживаемые типы определяются упаковкой и конфигурацией вашей системы, поэтому ваша система может поддерживать больше или меньше, чем моя, но, как правило, их много. libmagic также включает в себя дополнительные жестко запрограммированные тесты.

6: Файл должен быть идентифицирован как файл данных.

Это foo: data , когда он вообще ничего не смог выяснить о файле.

Могут появиться и другие маленькие теги. Исполняемый файл ( + x ) будет включать в себя « исполняемый файл » в выводе, обычно через запятую. Реализация файла может также знать дополнительные сведения о некоторых форматах файлов, чтобы иметь возможность описывать дополнительные сведения о них, как в вашем « PDF-документе, версия 1.4 ».

13
27.01.2020, 19:47

Я хотел бы, чтобы вы прочитали ответ из здесь . Некоторые выдержки из ответа:

Из man-страницы команды file,

file на самом деле выполняет 3 теста по определению типа файла.

Первый тест

Тесты файловой системы основаны на изучении возвращаемого из немедленно (2) системный вызов.

Второй тест

Тесты с магическими числами используются для проверки файлов с данными в конкретные фиксированные форматы.

Третий тест

Языковые тесты ищут конкретные строки (cf names.h), которые могут появляться на сайте где угодно в первых нескольких блоках файла. Например, ключевое слово .br указывает на то, что файл скорее всего является входным файлом troff(1), просто так как структура ключевого слова указывает на программу на Си.

Вывод команды файл , как правило, основан на результатах любого из успешных тестов.

Теперь, если предположить, что программа на Си++ начинается именно так, а третий тест проходит успешно,

#include <iostream.h>
bla
bla

По третьему тесту ключевое слово #include особенно указывает на то, что это программа типа C, хотя у нас под рукой есть CPP программа. Теперь, когда я проверяю,

$ file example.cpp

example.cpp: ASCII C program text

Теперь, понятия объектно-ориентированной программы специфичны для C++. Создадим файл, специфичный для C++.

Я запускаю свою программу на C++ как,

Class something
{
}
bla
bla

Теперь, когда я выпускаю

$ file example.cpp

Вывод,

example.cpp: ASCII C++ program text

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

5
27.01.2020, 19:47

Жиль и Майкл Гомер дали отличные ответы. На которые я вас направляю. Чтобы увидеть типы файлов, распознаваемых в вашей системе, попробуйте запустить

cat /usr/share/magic

Если это дает проблемы с разрешениями, или не существует, то возможно

find / -exec file {} \; 2>/dev/null | cut -d":" -f2 | sort -u

(может понадобиться подстройка в зависимости от вашей системы), которая должна показать вам список типов файлов в вашей системе. Выполнение этой команды может занять много времени в зависимости от размера вашей корневой файловой системы.

1
27.01.2020, 19:47

Страницы руководства обычно представляют собой краткие ссылки, а не введение. Начните со страницы Википедии .

файл смотрит только на содержимое файла, а не на имя файла. (Он также проверяет некоторые метаданные файла, такие как тип файла: каталог, символическая ссылка, именованный канал и т. Д. Но в тех случаях, которые вас интересуют, имеет значение именно содержимое.)

file обычно предполагает догадки. формат файла, просматривая первые несколько байтов и сравнивая их со встроенной таблицей магических чисел . Например, если файл начинается с % PDF , то файл сообщает «PDF-документ» (и продолжает копать, чтобы сообщить минимальную версию). Для типов файлов, которые не начинаются с магических чисел, он содержит эвристику, например сообщить «текст ASCII», если первые несколько байтов находятся в печатаемом диапазоне ASCII.

Вывод файла хрупкий: он может варьироваться от варианта unix к варианту unix и от версии к версии. В Linux, Cygwin и * BSD команда file поддерживает параметр -i , который производит предсказуемый вывод в форме типа носителя MIME ( IANA управляет списком стандартных типов носителей ). Здесь не так много деталей, и вывод менее удобен для человека, но вывод предсказуем и удобен для компьютера.

$ file -i somefile.csv
somefile.csv: text/plain; charset=us-ascii
$ file -i somefile.jpg
somefile.jpg: image/jpeg; charset=binary
$ file -i somefile.pdf
somefile.pdf: application/pdf; charset=binary

Используйте file --mime-type , если вам нужен только сам тип MIME без информации о кодировке, например заявка / pdf . Передайте параметр -b , если вы не хотите отображать имя файла в начале строки.

8
27.01.2020, 19:47

Теги

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