Вики / Базовые команды
file — тип файла
Определить, что внутри файла (текст, ELF, архив, картинка) по содержимому, а не по расширению.
file определяет тип файла по содержимому (сигнатуре, «магическим байтам»),
а не по расширению. В Linux расширение ничего не значит — file говорит правду.
file report # report: ASCII text
file /bin/ls # ELF 64-bit LSB pie executable, x86-64 …
file archive # gzip compressed data (даже если без .gz)
file photo # JPEG image data, …
file * # типы всех файлов в каталоге
file -i notes.txt # MIME-тип: text/plain; charset=utf-8
file -b script.sh # без имени файла (только тип) — удобно в скриптах
file -L symlink # идти по симлинку и смотреть цель
file -s /dev/sda1 # -s: заглянуть в блочное устройство (тип ФС)
file -z archive.gz # заглянуть ВНУТРЬ сжатого
Ключи: -b (кратко), -i (MIME), -L (по симлинку), -s (спецфайлы/устройства),
-z (внутрь сжатого).
«Скрипт не запускается: cannot execute binary file»
file script покажет реальный тип. Частые причины: это HTML/текст ошибки вместо
бинаря (скачалось не то), или CRLF-переводы строк (file скажет «with CRLF line
terminators») — почини sed -i 's/\r$//' script.
Кодировка текста под вопросом
file -i file покажет charset (utf-8 / iso-8859-1). Для перекодировки — iconv.
Определить тип ФС на разделе
file -s /dev/sdXN (от root) — быстрый способ без монтирования; для разметки см. mount.
file f # тип по содержимому
file -i f # MIME + кодировка
file -b f # только тип (для скриптов)
file -s /dev/sda1 # тип ФС на устройстве (root)
См. также
- Базовые команды с файлами — Базовые команды
- stat — метаданные файла — Базовые команды
- tar (архивы) — Базовые команды