НАЗВА

file - визначає тип файла

ЗВЕДЕННЯ

file [-bchikLnNprsvz] [-f файл-назв-файлів] [-F розділювач] [-m файл-логічних-чисел] файл ...
file -C [-m файл-логічних-чисел]

ОПИС

Ця сторінка посібника містить опис команди file версії 4.15.

Програма file перевіряє кожний аргумент і намагається його класифікувати. Існують три набори перевірок, що проводяться в наступній послідовності: перевірка файлової системи, перевірка логічного числа (magic number), перевірка мови. Перший тест, який матиме успіх, надрукує тип файла.

Виведений тип міститиме одне з наступних (ключових) слів: text - файл, що містить тільки друковні символи і можливо декілька керівних, який напевне безпечно читати в ASCII-терміналі; executable - файл, що містить результат компіляції програми, у формі, зрозумілій одному ядру UNIX чи іншому; data - щось інше (бінарне чи недруковне). Винятками служать добре відомі формати файлів (файли скиду пам'яті, архіви tar), які відомо, що містять бінарні дані. Змінюючи файл /etc/file/magic або саму програму, зберігайте ці ключові слова. Користувачі покладаються на те, що всі прочитні файли в каталозі повернуть слово "text". Не робіть так, як Берклі зробили, змінивши "shell commands text" на "shell script". Зверніть увагу, що файл /etc/file/magic побудовано механічно з великої кількості маленьких файлів у каталозі Magdir вихідних текстів цієї програми.

Перевірка файлової системи основана на значеннях, повернених системним викликом stat(2). Програма перевіряє, щоб побачити, чи файл бува не порожній або це якийсь спеціальний файл. Відомі типи файлів, характерні для вашої системи (сокети, символічні посилання, іменовані конвеєри FIFO), буде вгадано, якщо вони означені у системному заголовному файлі <sys/stat.h>.

Перевірка логічних чисел застосовується для файлів з даними, що мають певний сталий формат. Канонічним прикладом цього може служити бінарний виконуваний файл a.out (компільована програма), чий формат означено в a.out.h і можливо exec.h стандартного каталогу заголовків. Логічне число файлів a.out збережено в певному місці напочатку файла, що вказує операційній системі UNIX, що цей файл являється бінарним виконуваним, і яким саме типом виконуваного. Концепція логічних чисел було поширено також на файли даних. Будь-який файл з якимсь незмінним ідентифікатором, розташованим у певному положенні (обчислюваному як зміщення), можна описати таким чином. Інформація, що ідентифікує ці файли, читається з компільованого файла логічних чисел /etc/file/magic.mgc, або /etc/file/magic, якщо компільованої версії не існує. Крім цього, file перевірить файли $HOME/.magic.mgc або $HOME/.magic на наявність логічних чисел.

Якщо файл не збігається із записами файла логічних чисел, він перевіряється, чи це бува не текстовий файл. ASCII, ISO-8859-x, не-ISO 8-бітні набори символів розширеного ASCII (як ті, що використовуються в Macintosh і IBM PC), Unicode UTF-8, Unicode UTF-16 і EBCDIC можна розрізнити по різних інтервалах послідовності байтів, що складають друковний текст у кожному наборі. Якщо файл пройде якийсь з цих тестів, звітується назва його набору символів. Файли ASCII, ISO-8859-x, UTF-8 і розширений ASCII ідентифіковано як "text", оскільки їх можна прочитати у більшості терміналів; UTF-16 і EBCDIC - це "character data" (символьні дані), оскільки вони хоч і містять текст, цей текст вимагає перекладу до того як його можна буде прочитати. На додаток, file спробує визначити інші характеристики файлів текстового типу. Якщо рядки файла закінчуються CR, CRLF або NEL замість стандартного для Unix LF, це також звітуватиметься. Так само буде розпізнано файли, які містять керівні послідовності та накладання знаків (overstriking).

Щойно file визначить набір символів текстового файла, вона також спробує відгадати якою мовою написано цей файл. Перевірка мови шукає певні ланцюжки (cf names.h), які можуть з'явитися будь-де в перших кілька блоків файла. Наприклад, ланцюжок ".br" може свідчити, що це ймовірно файл вводу програми ?troff(1), тоді як ключове слово "struct" вказує на програму C. Ця перевірка не така надійна як перші дві, тож вона проводитиметься останньою. Функції перевірки мови також шукають плутаних ланцюжків (як у випадку архіву tar(1)).

Якщо неможливо розпізнати набір символів файла, для нього виводиться просто "data".

ОПЦІЇ

-b, --brief : Не додавати назв файлів до рядків виводу (стислий режим).

-c, --checking-printout : Спричиняє контрольний роздрук аналізованої форми файла логічних чисел. Зазвичай використовується у поєднанні з прапорцем -w для відлагодження нового файла логічних чисел до його інсталяції.

-C, --compile : Запише (компілює) бінарний файл magic.mgc - попередньо-аналізовану версію файла magic.

-f, --files-from файл-назв-файлів : Читатиме назви файлів для аналізу з файла-назв-файлів (по-одній назві на рядок) до списку аргументів. Треба вказати або файл-назв-файлів, або один аргумент файл; для перевірки стандартного вводу, скористайтеся з '-', як аргумент назви файла.

-F, --separator розділювач : Використати вказаний ланцюжок як розділювач між назвою файла та поверненим результатом. Стандартний розділювач - ":".

-h, --no-dereference : Ця опція спричинить до того, що file не слідуватиме за символічними посиланнями (на системах, що підтримують символічні посилання). Це стандартне поводження, якщо не означено змінну POSIXLY_CORRECT.

-i, --mime : Спричинить до виводу file ланцюжків мімічного типу замість традиційного легкопрочитного формату. Наприклад, це може вивести "text/plain; charset=us-ascii" замість "ASCII text". Для дії цієї опції, file змінює спосіб розпізнання файлів і використовує альтернативний файл логічних чисел - magic.mime. (Дивіться розділ ФАЙЛИ нижче.)

-k, --keep-going : Не зупинятися на першому збігові, продовжувати порівняння.

-L, --dereference : Ця опція спричинить до того, що file слідуватиме за символічними посиланнями (на системах, що підтримують символічні посилання). Це стандартне поводження, коли означено змінну POSIXLY_CORRECT.

-m, --magic-file список : Вказує альтернативний список файлів логічних чисел. Це може бути один файл, або список розділених комою список файлів. Якщо в процесі буде знайдено компільований файл логічних чисел, то використовуватиметься саме він, натомість. З опцією -i або -mime, програма додасть ".mime" до назви кожного файла.

-n, --no-buffer : Примушує до очистки буфера стандартного виводу після перевірки кожного файла. Корисно тільки у разі перевірки списку файлів. Задумано для передання виводу file іншим програмам через конвеєр.

-N, --no-pad : Не вирівнювати виводу (не заповнювати пробілами).

-p, --preserve-date : На системах, що підтримують ?utime(2) або ?utimes(2), спробувати зберегти (не чіпати) час доступу до аналізованих файлів, ніби ?file(2) ніколи їх не читала.

-r, --raw : Не перекладати недруковні символи на \ooo. Звичайно file перекладає недруковні символи у їхнє вісімкове представлення.

-s, --special-files : Зазвичай, file тільки пробує прочитати та визначити той тип файлів, які stat(2) класифікує як звичайні файли. Це запобігає проблемам, оскільки читання спеціальних файлів може мати несподівані наслідки. Вказівка прапорця -s змусить file читати також блокові та символьні спеціальні файли. Це може бути корисним для визначення типів файлової системи на необроблених розділах диска, що являють собою блокові спеціальні файли. Ця опція також спричиняє до ігнорування програмою розмірів файла, повернутих функцією stat(2), оскільки на деяких системах вона повертає нульовий розмір для необроблених розділів диска.

-v, --version : Виведе версію програми і завершить роботу.

-z, --uncompress : Спробує зазирнути всередину стиснених файлів.

--help : Виведе повідомлення з поміччю і завершить роботу.

ФАЙЛИ

/etc/file/magic.mgc : Стандартний компільований список логічних чисел.

/etc/file/magic : Стандартний список логічних чисел.

/etc/file/magic.mime.mgc : Стандартний компільований список логічних чисел, що використовується для виводу мімічних значень, коли задана опція -i.

/etc/file/magic.mime : Стандартний список логічних чисел, що використовується для виводу мімічних значень, коли задана опція -i.

СЕРЕДОВИЩЕ

Для задання стандартного файла логічних чисел можна скористатися змінної MAGIC. Коли задано цю змінну, file не намагатиметься відкрити $HOME/.magic. При потребі, file додасть ".mime" і/або ".mgc" до значення цієї змінної. Змінна середовища POSIXLY_CORRECT керує (на системах, які підтримують символічні посилання) тим, чи слідуватиме file за символічними посиланнями, чи ні. Якщо її встановлено, file слідуватиме за ними, інакше - ні. Ця поведінка також контролюється прапорцями -L і -h.

ДИВІТЬСЯ ТАКОЖ

?magic(5) - опис формату файла логічних чисел.
?strings(1), od(1), ?hexdump(1) - знаряддя для дослідження нетекстових файлів.