file
— стандартна команда в Unix-подібних операційних системах, яка призначена для розпізнавання типу даних, які містяться всередині комп'ютерного файлу.
Тип | Файловий детектор |
---|---|
Розробник | |
Перший випуск | 1973 як частина ; 1986 як програмне забезпечення з відкритим кодом |
Платформа | Cross-platform |
Операційна система | Unix, Unix-like |
Мова програмування | C |
Ліцензія | BSD license, CDDL |
Репозиторій | https://github.com/file/file |
Вебсайт | darwinsys.com/file/ |
Історія
Свій початок команда file
бере з 1973, коли вона вперше з'явилася в . System V принесла головне оновлення з деякими важливими змінами, які полягали в тому, що інформація про типи файлів розташовувалася в зовнішньому текстовому файлі замість того, щоб вкомпільовуватися в двійковий код самої програми.
Більшість BSD і Linux дистрибутивів використовують вільну, з відкритим кодом, реімплементацію, яка була створена в 1986-87 фактично з нуля.
Специфікація
Single UNIX Specification (SUS) визначає серію тестів, які повинні бути здійснені над файлом, вказаним в командному рядку:
- якщо файл не може бути зчитаний або його Unix-тип невизначений, то команда
file
повідомить, що файл був опрацьований, але його тип був невизначений; file
повинен бути в змозі визначати типи каталог, FIFO, socket, блочний спеціальний файл і символьний спеціальний файл;- файли нульової довжини ідентифікуються як такі;
- розглядається початкова частина файлу і
file
використовує тести, що залежать від позиції всередині файлу; - весь файл розглядається і
file
використовує контекстно-залежні тести; - файл ідентифікується як
data
-файл.
Позиційно-чутливі тести команди file
, як правило, реалізуються шляхом зіставлення різних місць розташування в файлі з текстовою базою даних, яка містить сигнатури (послідовності байтів, які слугують «візитною карткою» якогось типу файлів). Цей підхід відрізняється від інших простих методів, таких як аналіз по розширенню файлу або за схемою на зразок MIME.
В більшості реалізацій команда file
використовує базу даних для перевірки перших байтів файлу. Ця база даних міститься в файлі під назвою magic
, який зазвичай розташований в /etc/magic
, /usr/share/file/magic
або схожих місцях файлової системи.
Використання
SUS визначає наступні параметри, які можуть бути передані команді file
:
- -M file - вказує ім’я файлу, що містить позиційно-залежні тести, які слід застосувати до файлу з метою його класифікації; позиційно-залежні і контекстно-залежні тести, які ідуть за замовчуванням, не проводяться.
- -m file - схоже на -M, але тести за замовчуванням будуть проведені після тестів, які містяться у вказаному файлі.
- -d - поведінка за замовчуванням, виконуються всі позиційно-залежні і контекстно-залежні тести над вказаним файлом.
- -h - не переходити за символьним посиланням, яке вказує на файл або каталог (інформація про саме символьне посилання).
- -L - переходити за символьним посиланням, яке вказує на файл або каталог (інформація про файл або каталог).
- -i - не класифікувати файл, просто ідентифікувати його як: неіснуючий, спеціальний блочний файл, спеціальний файл символів, каталог, іменований канал, сокет, символьне посилання чи звичайний файл. Linux і BSD системи поводяться по різному з цим параметром.
Інші Unix і Unix-подібні операційні системи можуть мати додаткові параметри (наприклад, -s 'special files', -k 'keep-going' або -r 'raw').
Фактично команда file
може сказати тільки на що схожий файл, а не чим він насправді є (які дані дійсно містяться всередині файлу). Тому достатньо легко можна надурити програму, помістивши всередину файлу, який тестується, сигнатуру іншого типу файлу. Тому ця команда не може бути використана, як безпечний інструмент.
Приклади
$ file file.c file.c: C program text
$ file program program: ELF 32-bit LSB executable, Intel 80386, version 1 (SYSV), dynamically linked (uses shared libs), stripped
$ file /dev/hda1 /dev/hda1: block special (0/0)
$ file -s /dev/hda1 /dev/hda1: Linux/i386 ext2 filesystem
Варто зауважити, що -s не є стандартним параметром і доступна тільки на деяких платформах.
$ file -k -r libmagic-dev_5.35-4_armhf.deb # (on Linux) libmagic-dev_5.35-4_.deb: Debian binary package (format 2.0) - current archive - data
Якщо програмі передано нестандартний параметр -k, то команда не зупиняється після того, як знайде перше співпадіння по сигнатурі, а продовжує аналізувати файл на предмет інших співпадінь.
$ file compressed.gz compressed.gz: gzip compressed data, deflated, original filename, `compressed',last modified: Thu Jan 26 14:08:23 2006, os: Unix
$ file -i compressed.gz # (on Linux) compressed.gz: application/x-gzip; charset=binary
$ file data.ppm data.ppm: Netpbm PPM "rawbits" image data
$ file /bin/cat /bin/cat: Mach-O with 2 architectures /bin/cat [for architecture ppc7400):Mach-O executable ppc /bin/cat (for i386):Mach-O i386
Бібліотека libmagic
Починаючи з версії 4.00 програми file
, її функціонал було вбудовано в бібліотеку libmagic
, яку можна використовувати під час написання програм на C і C-подібних мовах; версія для Linux та NetBSD реалізована саме з використанням цієї бібліотеки.
Посилання
- . Архів оригіналу за 12 жовтня 2018. Процитовано 12 квітня 2020.
Зовнішні посилання
- file mailing list [ 21 лютого 2019 у Wayback Machine.]
- file releases [ 9 лютого 2020 у Wayback Machine.]
Сторінки man
Вікіпедія, Українська, Україна, книга, книги, бібліотека, стаття, читати, завантажити, безкоштовно, безкоштовно завантажити, mp3, відео, mp4, 3gp, jpg, jpeg, gif, png, малюнок, музика, пісня, фільм, книга, гра, ігри, мобільний, телефон, android, ios, apple, мобільний телефон, samsung, iphone, xiomi, xiaomi, redmi, honor, oppo, nokia, sonya, mi, ПК, web, Інтернет
file standartna komanda v Unix podibnih operacijnih sistemah yaka priznachena dlya rozpiznavannya tipu danih yaki mistyatsya vseredini komp yuternogo fajlu fileTipFajlovij detektorRozrobnikAT amp T Bell LaboratoriesPershij vipusk1973 yak chastina 1986 yak programne zabezpechennya z vidkritim kodomPlatformaCross platformOperacijna sistemaUnix Unix likeMova programuvannyaCLicenziyaBSD license CDDLRepozitorijhttps github com file fileVebsajtdarwinsys com file IstoriyaSvij pochatok komanda file bere z 1973 koli vona vpershe z yavilasya v System V prinesla golovne onovlennya z deyakimi vazhlivimi zminami yaki polyagali v tomu sho informaciya pro tipi fajliv roztashovuvalasya v zovnishnomu tekstovomu fajli zamist togo shob vkompilovuvatisya v dvijkovij kod samoyi programi Bilshist BSD i Linux distributiviv vikoristovuyut vilnu z vidkritim kodom reimplementaciyu yaka bula stvorena v 1986 87 faktichno z nulya SpecifikaciyaSingle UNIX Specification SUS viznachaye seriyu testiv yaki povinni buti zdijsneni nad fajlom vkazanim v komandnomu ryadku yaksho fajl ne mozhe buti zchitanij abo jogo Unix tip neviznachenij to komanda file povidomit sho fajl buv opracovanij ale jogo tip buv neviznachenij file povinen buti v zmozi viznachati tipi katalog FIFO socket blochnij specialnij fajl i simvolnij specialnij fajl fajli nulovoyi dovzhini identifikuyutsya yak taki rozglyadayetsya pochatkova chastina fajlu i file vikoristovuye testi sho zalezhat vid poziciyi vseredini fajlu ves fajl rozglyadayetsya i file vikoristovuye kontekstno zalezhni testi fajl identifikuyetsya yak data fajl Pozicijno chutlivi testi komandi file yak pravilo realizuyutsya shlyahom zistavlennya riznih misc roztashuvannya v fajli z tekstovoyu bazoyu danih yaka mistit signaturi poslidovnosti bajtiv yaki sluguyut vizitnoyu kartkoyu yakogos tipu fajliv Cej pidhid vidriznyayetsya vid inshih prostih metodiv takih yak analiz po rozshirennyu fajlu abo za shemoyu na zrazok MIME V bilshosti realizacij komanda file vikoristovuye bazu danih dlya perevirki pershih bajtiv fajlu Cya baza danih mistitsya v fajli pid nazvoyu magic yakij zazvichaj roztashovanij v etc magic usr share file magic abo shozhih miscyah fajlovoyi sistemi VikoristannyaSUS viznachaye nastupni parametri yaki mozhut buti peredani komandi file M file vkazuye im ya fajlu sho mistit pozicijno zalezhni testi yaki slid zastosuvati do fajlu z metoyu jogo klasifikaciyi pozicijno zalezhni i kontekstno zalezhni testi yaki idut za zamovchuvannyam ne provodyatsya m file shozhe na M ale testi za zamovchuvannyam budut provedeni pislya testiv yaki mistyatsya u vkazanomu fajli d povedinka za zamovchuvannyam vikonuyutsya vsi pozicijno zalezhni i kontekstno zalezhni testi nad vkazanim fajlom h ne perehoditi za simvolnim posilannyam yake vkazuye na fajl abo katalog informaciya pro same simvolne posilannya L perehoditi za simvolnim posilannyam yake vkazuye na fajl abo katalog informaciya pro fajl abo katalog i ne klasifikuvati fajl prosto identifikuvati jogo yak neisnuyuchij specialnij blochnij fajl specialnij fajl simvoliv katalog imenovanij kanal soket simvolne posilannya chi zvichajnij fajl Linux i BSD sistemi povodyatsya po riznomu z cim parametrom Inshi Unix i Unix podibni operacijni sistemi mozhut mati dodatkovi parametri napriklad s special files k keep going abo r raw Faktichno komanda file mozhe skazati tilki na sho shozhij fajl a ne chim vin naspravdi ye yaki dani dijsno mistyatsya vseredini fajlu Tomu dostatno legko mozhna naduriti programu pomistivshi vseredinu fajlu yakij testuyetsya signaturu inshogo tipu fajlu Tomu cya komanda ne mozhe buti vikoristana yak bezpechnij instrument Prikladi file file c file c C program text file program program ELF 32 bit LSB executable Intel 80386 version 1 SYSV dynamically linked uses shared libs stripped file dev hda1 dev hda1 block special 0 0 file s dev hda1 dev hda1 Linux i386 ext2 filesystem Varto zauvazhiti sho s ne ye standartnim parametrom i dostupna tilki na deyakih platformah file k r libmagic dev 5 35 4 armhf deb on Linux libmagic dev 5 35 4 deb Debian binary package format 2 0 current archive data Yaksho programi peredano nestandartnij parametr k to komanda ne zupinyayetsya pislya togo yak znajde pershe spivpadinnya po signaturi a prodovzhuye analizuvati fajl na predmet inshih spivpadin file compressed gz compressed gz gzip compressed data deflated original filename compressed last modified Thu Jan 26 14 08 23 2006 os Unix file i compressed gz on Linux compressed gz application x gzip charset binary file data ppm data ppm Netpbm PPM rawbits image data file bin cat bin cat Mach O with 2 architectures bin cat for architecture ppc7400 Mach O executable ppc bin cat for i386 Mach O i386Biblioteka libmagicPochinayuchi z versiyi 4 00 programi file yiyi funkcional bulo vbudovano v biblioteku libmagic yaku mozhna vikoristovuvati pid chas napisannya program na C i C podibnih movah versiya dlya Linux ta NetBSD realizovana same z vikoristannyam ciyeyi biblioteki Posilannya Arhiv originalu za 12 zhovtnya 2018 Procitovano 12 kvitnya 2020 Zovnishni posilannyafile mailing list 21 lyutogo 2019 u Wayback Machine file releases 9 lyutogo 2020 u Wayback Machine Storinki man a rel nofollow class external text href http linux die net man 1 file file 1 a storinka dovidki man pro koristuvacki komandi GNU Linux angl a rel nofollow class external text href http netbsd gw com cgi bin man cgi libmagic 3 NetBSD current libmagic 3 a NetBSD Library Functions a rel nofollow class external text href http linux die net man 3 libmagic libmagic 3 a storinka dovidki man pro bibliotechni funkciyi GNU Linux angl