- Команда file в Linux
- Синтаксис и опции file
- Примеры использования file
- Выводы
- Инструкция по использованию команды file
- Как узнать тип файла без расширения или с неправильным расширением
- Как проверить тип сразу нескольких файлов
- Как по типу файла узнать расширение
- Как сделать так, чтобы не менялась дата доступа к файлу при использовании file
- Как узнать файловую систему диска
- Связанные статьи:
- Как найти / определить типы файлов в Linux
- Примеры команд file Linux
- You may also like
- 📜 Чтение файла построчно на Bash
- 📧 В чем разница между IMAP и POP3
- ✔️ Как управлять контейнерами LXD от имени обычного.
- 📜 Руководство для начинающих по созданию первого пакета.
- Феноменальная популярность электроники Xiaomi: основные причины
- 📜 Получение вчерашней даты в Bash: Практическое руководство
- Использование специальных гелей при мышечных болях
- 🐧 Сравнение команд Printf и Echo на Linux
- 📦 Как расширить/увеличить файловую систему VxFS на Linux
- Услуги по размещению серверного оборудования в ЦОД
- Leave a Comment Cancel Reply
- • Свежие записи
- • Категории
- • Теги
- • itsecforu.ru
- • Страны посетителей
- IT is good
Команда file в Linux
Команда file — одна из самых полезных, поскольку позволяет узнать тип данных, которые на самом деле содержатся внутри документа. Если у вас есть какой-либо файл, взятый из ненадёжного источника, не поленитесь проверить его с помощью этой команды, прежде чем нажать кнопку Открыть. Возможно, такая предосторожность покажется лишней, но она оградит вас от «встречи» с нежелательным контентом.
В большинстве дистрибутивов Linux утилита file (работу которой и запускает одноимённая команда) входит в стандартный набор программного обеспечения.
Синтаксис и опции file
Синтаксис команды file достаточно простой. Записывать её в эмуляторе терминала или консоли следует так:
file опции название_документа
Что же касается опций, то их у этой команды несколько десятков. Мы рассмотрим лишь основные:
- -b, —brief — запрет на демонстрацию имен и адресов файлов в выводе команды;
- -i, —mime — определение MIME-типа документа по его заголовку;
- —mime-type, —mime-encoding — определение конкретного элемента MIME;
- -f, —files-from — анализ документов, адреса которых указаны в простом текстовом файле;
- -l, —list — список паттернов и их длина;
- -s, —special-files — предотвращение проблем, которые могут возникнуть при чтении утилитой специальных файлов;
- -P — анализ определенной части файла, которая обозначается различными параметрами;
- -r, —raw — отказ от вывода /ooo вместо непечатных символов;
- -z — анализ содержимого сжатых документов.
Для того, чтобы ознакомиться с полным списком опций, выполните в терминале команду:
Примеры использования file
Если вам нужно всего лишь посмотреть тип файла, использовать опции не обязательно. Достаточно прописать имя команды, а также название файла и путь к нему, при условии, что он находится не в корневой папке:
Случается, что нужно проверить не один, а несколько файлов. Чтобы не выполнять команду много раз подряд, перечисляйте названия всех файлов через пробел:
file /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff
Как видно на примере, картинки с расширениями gif и tiff в действительности оказались текстовыми документами, а архив с расширением zip — PDF документом. Кстати, команда file даёт возможность не только проверить, является ли архив архивом, но и заглянуть внутрь, чтобы узнать, что в нём содержится. Для этой цели используется опция -z:
file -z /home/main-user/losst/testarchive.zip
Как вы успели заметить, команда, возвращая ответ, постоянно выводит названия файлов, что в некоторых случаях бывает удобно, но зачастую только усложняет чтение результатов. Отключить эту функцию легко — воспользуйтесь опцией -b:
file -b /home/main-user/losst/test-file.gif /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file2.tiff
Иногда нужно узнать не просто тип файла, а его MIME-тип. В таком случае на помощь приходит опция -i:
file -i -b /home/main-user/losst/fileA.sbin /home/main-user/losst/fileG.aspx /home/main-user/losst/fileH.lua
Нередко по каким-либо причинам утилита не может найти указанный файл: например, вы ошиблись буквой в его названии или неверно указали папку, в которой он находится. Тогда вывод информации об этом файле предваряет фраза cannot open. Впрочем, есть возможность видоизменить результат, добавив в него сообщение об ошибке. Для этого используйте опцию -E.
Сравните вывод команды с опцией -E и без неё:
file -E -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.gif
file -b /home/main-user/losst/test-file1.zip /home/main-user/losst/test-file4.raw /home/main-user/losst/test-file.gif
Еще один способ работы с утилитой file — запись названий и адресов документов в простой текстовый файл. Применяя этот способ на практике, не забывайте добавлять к команде опцию —files-from, после которой указывайте имя файла, содержащего список документов, и путь к нему.
file —files-from /home/main-user/losst/list_of_files.txt
Выводы
Команда file помогает избежать ситуаций, когда вам приходится открывать подозрительные файлы, не будучи уверенными в их содержимом. Также вы можете использовать её для проверки содержимого нескольких архивов, если есть необходимость найти потерявшийся в большом массиве файлов документ, но нет желания просматривать все архивы вручную.
Обнаружили ошибку в тексте? Сообщите мне об этом. Выделите текст с ошибкой и нажмите Ctrl+Enter.
Инструкция по использованию команды file
Как узнать тип файла без расширения или с неправильным расширением
Команда file может определить тип файла для обычных файлов и используемую файловую систему для дисков.
Утилита file используется «магические» байты. Суть в том, что файлы одного типа имеют одинаковые байты в определённых местах файла, программа file использует обширную базу данных в которых описаны типы файлов и какие последовательности байтов в каких местах располагаются. Благодаря этому с помощью file можно определить тип файалов без расширения или с неправильным расширением.
Использование очень простое — укажите одно или несколько имён файлов, то есть:
file ФАЙЛ1 ФАЙЛ2 ФАЙЛ3 ФАЙЛ4
Чтобы узнать тип файла без расширения, имеющего имя «file1» нужно выполнить команду:
file1: JPEG image data, Exif standard: [TIFF image data, little-endian, direntries=11, manufacturer=samsung, model=SM-J710F, orientation=upper-left, xresolution=164, yresolution=172, resolutionunit=2, software=J710FXXU6CSE1, datetime=2019:11:10 16:31:24, GPS-Data], baseline, precision 8, 4128x3096, components 3
Вначале идёт имя файла, а затем через двоеточия показывается информация о нём. В этом примере это JPEG, то есть изображение. Также для данного файла частично показана метаинформация.
Если вы не хотите, чтобы вначале показывалось имя файла, то используйте опцию -b:
Как проверить тип сразу нескольких файлов
Как можно увидеть на скриншоте, в текущей папке имеется несколько файлов без расширений. Узнаем тип каждого из них.
Можно указать имена всех файлов или использовать * (звёздочка) чтобы проверить все файлы в текущей директории:
Удалось определить тип каждого файла:
- JPEG image — картинка
- Python script — скрипт на языке Python
- PDF document — PDF документ
- PE32 executable (console) Intel 80386 Mono/.Net assembly, for MS Windows — исполнимый файл для ОС MS
- 7-zip archive — архив 7-zip
- Bourne-Again shell script — Bash скрипт
- DOS/MBR boot sector, code offset 0x52+2, OEM-ID «NTFS — образ диска с файловой системой NTFS
- Microsoft Word 2007+ — офисный документ Word
- OpenDocument Text — офисный документ LibreOffice
Как по типу файла узнать расширение
Чтобы узнать правильное расширение для файла определённого типа используйте опцию —extension:
Как сделать так, чтобы не менялась дата доступа к файлу при использовании file
Программа file считывает данные из файла и, следовательно, меняет дату последнего доступа к нему. Опция -p, —preserve-date в системах, поддерживающих utime или utimes, попытается сохранить время доступа к анализируемым файлам, чтобы сделать вид, что файл никогда их не читался.
Как узнать файловую систему диска
Для файлов образов файловых систем, программа file покажет тип файловой системы. Для дисков эта утилита также умеет определять тип файловой системы, но требуется использование двух дополнительных опций, поскольку файл блочного устройства это специальный файл, а иногда это просто ссылка на специальный файл.
Опция -L, —dereference заставляет следовать по символическим ссылкам, как опция с подобным именем в ls (в системах, которые поддерживают символические ссылки). Это значение по умолчанию, если определена переменная среды POSIXLY_CORRECT.
Обычно file пытается только прочитать и определить тип файлов, переданных в качестве аргументов, о которых stat сообщает как обычные файлы. Это предотвращает проблемы, поскольку чтение специальных файлов может иметь специфические последствия. Указание опции -s, —special-files заставляет файл также читать файлы, которые являются специальными блочными или символьными файлами. Это полезно для определения типов файловой системы данных в необработанных разделах диска, которые являются специальными блочными файлами. Эта опция также заставляет файл игнорировать размер файла, сообщаемый stat, поскольку в некоторых системах он сообщает нулевой размер для необработанных разделов диска.
Следующая информация выведет данные о файловой системе диска /dev/sda:
/dev/sda: Linux rev 1.0 ext4 filesystem data, UUID=aad9d8d7-b1b9-435a-9e41-fc8159d2c484 (needs journal recovery) (extents) (64bit) (large files) (huge files)
Как следует из вывода, это файловая система ext4. Также показаны некоторые её характеристики и поддерживаемые возможности.
Без опции -s, то есть командой
мы получили бы следующий результат:
Как в file заглянуть во внутрь сжатых файлов
С помощью опции -z, —uncompress можно попытаться заглянуть во внутрь сжатых файлов. Опция не всегда работает и иногда из-за неё работа file завершается ошибкой.
Связанные статьи:
Как найти / определить типы файлов в Linux
У Linux есть полезная утилита, называемая file, которая выполняет некоторые тесты в указанном файле и выводит тип файла после успешного теста.
Примечание. Чтобы иметь все параметры, описанные в этой статье, вы должны запускать версию file 5.25 (доступную в репозиториях Ubuntu) или новее. Репозитории CentOS имеют более старую версию команды файла (файл-5.11), в которой отсутствуют некоторые параметры.
Вы можете выполнить следующую команду для проверки версии файловой утилиты, как показано.
$ file -v file-5.33 magic file from /etc/magic:/usr/share/misc/magic
Примеры команд file Linux
1. Простейшая команда file следующая, где вы просто предоставляете файл, тип которого вы хотите узнать.
2. Вы также можете передать имена файлов, которые будут проверяться, из файла (по одному на строку), который можно указать с помощью флага -f, как показано ниже:
3. Чтобы ускорить работу file, вы можете исключить тест (допустимые тесты включают apptype, ascii, encoding, token, cdf, compress, эльф, soft и tar) из списка тестов, выполненных для определения типа файла, используйте -e как показано на рисунке.
$ file -e ascii -e compress -e elf etc
4. Параметр -s заставляет файл также считывать специальные файлы блоков или символов.
$ file -s /dev/sda /dev/sda: DOS/MBR boot sector, extended partition table (last)
5. Добавление опций -z указывает файл для просмотра сжатых файлов.
6. Если вы хотите сообщить информацию о содержимом, а не сжатие сжатого файла, используйте флаг -Z.
7. Вы можете указать команде file выводить строки типа mime вместо более традиционных для чтения, используя опцию -i.
$ file -i -s /dev/sda /dev/sda: application/octet-stream; charset=binary
8. Кроме того, вы можете получить список допустимых расширений с косой чертой для типа файла, найденного добавлением -extension.
Дополнительные сведения и варианты использования см. На странице руководства команды.
itisgood
Что такое Desktop Window Manager (dwm.exe) Процесс в Windows 10?
Prettyping – сделать вывод команды Ping более доступной и легкой для чтения
You may also like
📜 Чтение файла построчно на Bash
📧 В чем разница между IMAP и POP3
✔️ Как управлять контейнерами LXD от имени обычного.
📜 Руководство для начинающих по созданию первого пакета.
Феноменальная популярность электроники Xiaomi: основные причины
📜 Получение вчерашней даты в Bash: Практическое руководство
Использование специальных гелей при мышечных болях
🐧 Сравнение команд Printf и Echo на Linux
📦 Как расширить/увеличить файловую систему VxFS на Linux
Услуги по размещению серверного оборудования в ЦОД
Leave a Comment Cancel Reply
• Свежие записи
• Категории
• Теги
• itsecforu.ru
• Страны посетителей
IT is good
В этой статье вы узнаете, как удалить удаленный Git-репозиторий. Процесс прост, но его полезно запомнить, чтобы избежать неожиданностей в будущем. Git – это…
В 11-й версии своей операционной системы Microsoft серьезно переработала интерфейс и убрала несколько привычных функций. Нововведения не всем пришлись по душе. Мы дадим…
Продажа ноутбука нередко становится хлопотным занятием. Кроме поиска покупателя, продавцу необходимо подготовить устройство перед проведением сделки. Но если последовательно выполнить все шаги, ничего…
Вы можете оказаться в ситуации, когда вам нужно использовать скрипт шелла для чтения файлов построчно. В этом руководстве я расскажу о нескольких способах…
Вторичное жильё выгоднее для молодых семей, желающих приобрести свою первую квартиру. Сталкиваясь с ипотечным кредитованием, можно избежать много лишней суеты и проблем, если…