Оглавление

Операционная система Linux предоставляет большое количество инструментов для работы с файлами. Один из таких инструментов — утилита file, которая помогает определить тип файла. Эта утилита не полагается на расширения (например, .txt, .jpg, .mp4), а анализирует содержимое файла, находя в нем специальные сигналы, характерные для определенного типа данных.

Как работает утилита file?

Утилита file сканирует начало файла и использует встроенные правила для его распознавания. Она может распознать бинарные файлы, текстовые файлы, изображения и многие другие типы. Это особенно полезно в случаях, когда расширение файла может быть неверным или отсутствовать вовсе.

Синтаксис

Самая простая команда для использования file выглядит следующим образом:

file <имя_файла>

Пример:

file example.txt

Вывод команды будет что-то вроде:

example.txt: ASCII text

В этом случае мы видим, что файл example.txt является обычным текстовым файлом с кодировкой ASCII.

Примеры

  1. Проверка текстового файла:
file script.sh

Результат:

script.sh: Bourne-Again shell script, ASCII text executable

Этот вывод сообщает нам, что script.sh — это исполняемый shell-скрипт.

  1. Проверка изображения:
file image.png

Результат:

image.png: PNG image data, 800 x 600, 8-bit/color RGB, non-interlaced

Утилита определила файл как изображение PNG с указанием его размера и глубины цвета.

Использование ключей

Иногда нужно проверить тип файла, на который ссылается символическая ссылка. Для этого можно использовать ключ -L. Он заставит утилиту анализировать целевой файл, а не саму ссылку.

Пример:

file -L ссылка

Определение архивов

Утилита file также может определить тип архива:

file archive.zip

Вывод:

archive.zip: Zip archive data, at least v2.0 to extract

Проверка бинарных файлов

Для бинарных файлов утилита file показывает, является ли файл исполняемым и для какой архитектуры он скомпилирован:

file программа

Вывод:

программа: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked, interpreter /lib64/ld-linux-x86-64.so.2

Здесь file сообщает, что это 64-битный исполняемый файл для архитектуры x86-64.

Заключение

Утилита file — это простой, но мощный инструмент для работы с файлами, позволяющий легко определять их типы на основе содержимого, а не расширения. Она особенно полезна в мире DevOps, где вы постоянно работаете с различными файлами и архивами.

Конечно, никто не мешает вам и дальше полагаться на привычные расширения файлов, но если хочется немного больше уверенности — всегда можно спросить у file. Кстати, а каким бы типом утилита определила вас?