Provided by: manpages-hu_20010119-6_all 

NÉV
file - fájl típusának meghatározása
ÁTTEKINTÉS
file [ -vczL ] [ -f fájlnévlista ] [ -m bűvösfájl ] fájlnév ...
LEÍRÁS
Ez a kézikönyv oldal a file parancs 3.20.1-es verzióját dokumentálja. A file parancs teszteli minden
argumentumát és megpróbálja kategorizálni ezeket. Három teszt sorozatot hajt végre, a következő
sorrendben: fájlrendzer tesztek, bűvösszám (magic number) tesztek, és nyelv tesztek. Az első sikeres
teszt eredménye határozza meg a program kimenetét.
A kiírt eredmény általában a következő szavak egyikét fogja tartalmazni: text (a fájl csak ASCII
karaktereket tartalmaz, és valószínüleg olvasható ASCII terminálon), executable (a fájl program fordítás
eredményét tartalmazza, mely értelmes valamilyen UNIX kernel számára) vagy data, ami bármi mást jelenthet
(a data típus általában `bináris' vagy nem-nyomtatható). Kivételt képeznek a jól ismert bináris fájl
formátumok (pl. core fájlok, tar arhívumok). Ha változtatsz a /etc/magic fájlon vagy magán a programon,
tartsd meg ezeket a kulcsszavakat . A felhasználók számítanak arra, hogy ha egy fájl olvasható, akkor a
típusában megjelenik a ``text'' karakterlánc. Ne tedd azt, amit a Berkley Egyetemen tettek -
megváltoztttak a ``shell commands text''-et ``shell script''-re.
A fájlrendszer tesztek eredménye a stat(2) renszerhíváson alapul. A program megnézi, hogy a kérdéses
fájl üres-e vagy esetleg valamilyen speciális fájl-e. Minden az operációs rendszer által ismert
fájltípust felismer (socket-eket, szimbolikus kötéseket vagy "named pipe"-okat (FIFOkat), már ha a
rendszerünk implementálja ezeket), ha az definiálva van a sys/stat.h rendszer fejléc fájlban.
A bűvösszám tesztekkel a program adott állandó formátumú fájlokat próbál azonosítani. Erre a
legkézenfekvőbb példa egy végrehajtható bináris (lefordított program) a.out állomány, aminek a formátumát
az a.out.h tartalmazza, és esetleg az exec.h az alapértelmezett "include" könyvtárban. Ezek a fájlok
tartalmaznak egy bűvös számot, egy adott helyen, valahol a fájl eleje táján, ami megmondja a UNIX
operációs rendszernek, hogy egy bináris futtatható programról van szó, valamint hogy pontosan melyik
fajtáról ezek közül. A `bűvös szám' elvét kiterjesztették más (bináris) adatokat tartalmazó fájlokra is.
Általában bármilyen fájlt azonosíthatunk ezzel a módszerrel, ha tartalmaz egy állandó azonosítót egy
meghatározott (a fájl elejéhez közel lévő) helyen. Az ehhez szükséges adatokat a program a /etc/magic
fájlból olvassa.
Ha az egyik tesztelt fájl ASCII szövegnek tűnik, a file megpróbálja a nyelvét megállapítani. A nyelv
tesztek különleges, a nyelvekre jellemző karakterláncokra keresnek (lásd names.h) a fájl első néhány
blokkjában. Például a .br kulcsszó arra enged következtetni, hogy valószínüleg egy troff(1) bemeneti
fájlról van szó, míg a struct kulcsszó C program forrásra utal. Ezek a tesztek kevésbé megbízhatóak mint
az előző két csoportban ismertetettek, ezért ezeket próbálja ki a file utoljára. A nyelvi tesztek egyébb
ellenőrzéseket is végeznek (mint pl. tar(1) archívumok azonosítása) és megállapítják, hogy egy
ismeretlen típusú fájl `ascii text' vagy `data' leírást kapjon-e.
OPCIÓK
-v, --version
Kiírja a program verzióját és kilép.
-m, --magic-file lista
Másik bűvös számokat tartalmazó fájl/fájlok megadása. Több fájl esetén a fájl neveket kettős
ponttal kell elválasztani.
-z, --uncompress
Megpróbál tömörített fájlokat is azonosítani.
-c, --checking-printout
Ellenőrző nyomtatás a bűvös számokat tartalmazó fájlról. Általában a -m kapcsolóval együtt
használatos, új bűvös számokat tartalmazó fájl telepítés előtti ellenőrzésekor.
-f, --files-from fájlnévlista
A megvizsgálandó fájlok nevét a fájlnévlista nevű fájlból olvassa (soronként egy fájlnév), majd az
argumentum listából. Vagy a fájlnévlista vagy legalább egy fájlnév argumentumnak jelen kell
lennie. A szabványos bemenet olvasásához használd a ``-'' jelet a fájlnév argumentum helyén.
-L, --dereference
Ezzel a kapcsolóval elérhetjük, hogy a file kövesse a szimbólikus kötéseket, ahogyan azt az ls(1)
azonos nevű kapcsolója is teszi. (azokon a rendszereken, amelyek támogatják a szimbólikus
kötéseket).
FÁJLOK
/etc/magic - bűvös számok alapértelmezett listája.
KÖRNYEZET
A MAGIC környezeti változóval állíthatjuk be az alapértelmezett bűvös számokat tartalmazó fájlt.
LÁSD MÉG
magic(5) - bűvös fájl formátumának leírása.
strings(1), od(1) - nem szöveg fájlok elemzésere használt eszközök.
IGAZODÁS A SZABVÁNYHOZ
Ez a program az általános nézet szerint felülmúlja a FILE(CMD)-ben szereplő "System V Interface
Definition"-t, már amennyire ezt abból meg lehet határozni. A viselkedése többnyire kompatíbilis az
azonos nevű System V programéval. Ez a verzió "jobb bűvész", tehát más (értsd pontosabb) eredménnyel
szolgál sok esetben.
Egy fontos eltérés van ezen verzió és a System V verziója között. Ez a verzió bármilyen szóközt (white
space) határoló karakterként értelmez, tehát a karakterláncokban előforduló szóközöket ki kell védeni.
Például a
>10 string language impress (imPRESS data)
sort egy már létező bűvös fájlban a következőre kellene lecserélni:
>10 string language\ impress (imPRESS data)
Továbbá, ebben a változatban, ha egy minta "backslash" karaktert tartalmaz, azt ki kell védeni. Például
0 string \begindata Andrew Toolkit document
sort egy már létező bűvös fájlban a következőre kellene cserélni:
0 string \\begindata Andrew Toolkit document
A Sun Microsystems által készített SunOS 3.2-es és az azt követő kiadásai tartalmaznak egy file(1)
parancsot, amely a System V parancs egy kibővített változata. Az én programom és a Sun változata között
csak minimális az eltérés. Ebbe beletartozik az `&' operátor használata, mint például a következő
esetben:
>16 long&0x7fffffff >0 not stripped
BŰVÖS SZÁMOK GYŰJTEMÉNYE
A bűvös számokat kőlönböző forrásokból gyűjtöttem össze, főleg USENET-ről, és különböző szerzőktől
származnak. Christos Zoulas (címét lasd lent) gyűjti a további, vagy javított bűvös fájl bejegyzéseket.
Rendszeresen frissítjük és közzé tesszük a bűvös fájl bejegyzésit.
A bejegyzések sorrendje a bűvös fájlban fontos, és változhat az operációs renszer függvényében. Így egy
régebbi file programhoz tartozó bűvös fájlt érdemes megtartani, összehasonlítási alapnak. (nevezd át pl.
/etc/magic.orig-ra).
TÖRTÉNET
Minden UNIX tartalmazza a file parancsot, legalábbis a Research Version 6 óta biztosan (kézikönyv oldal
kelte: 1975. január). A System V változata egy lényeges változást vonzott magával: a bűvös számok külső
fájlban való tárolását. Ez egy kicsit lassított a programon, de sokkal rugalmasabbá tette.
Ezt a programot a System V változat alapján Ian Darwin készítette, a nélkül, hogy bárkinek a forráskódját
látta volna.
John Gilmore tüzetesen átnézte a kódot, és javított rajta az első változathoz képest. Geoff Collyer
talált benne több pontatlanságot, és néhány bejegyzéssel gyarapította a bűvös fájlt. A program azóta is
folyamatos fejlesztés alatt áll.
SZERZŐK
Írta Ian F. Darwin, UUCP címe {utzoo | ihnp4}!darwin!ian, e-mail címe ian@sq.com, postai címe: P.O. Box
603, Station F, Toronto, Ontario, CANADA M4Y 2L8.
Változtatott rajta Rob McMahon, cudcv@warwick.ac.uk, 1989-ben. Kiterjesztette a `&' operátor használatát
az egyszerű `x&y != 0'-rol `x&y op z'-ra.
További változtatásokat csinált Guy Harris, guy@auspex.com, 1993-ban:
visszaállította a ``régi fajta'' `&' operátort mert 1) Rob McMahon változtatása eltért a
megszokott haszálattól, 2) a SunOS ``új fajta'' `&' operátora, amelyet ez a file verzió is
támogat, szintén kezeli a `x&y op z' műveletet és 3) egyébkent is, Rob változtatása nem volt
dokumentálva;
beépített több `>' szintet;
beépítette a ``beshort'', ``leshort'', stb. kulcsszavakat, hogy a program egy meghatározott byte
sorrendben olvassa a számokat a fájlból és ez a sorrend ne a file-t futtató processz eredendő bájt
sorrendjétől függjön.
További változtatások Ian Darwin valamint különböző más szerzők által, beleértve Christos Zoulas-t
(christos@ee.cornell.edu), 1990-1992-ben.
MÁSOLÁSI JOGOK
Copyright (c) Ian F. Darwin, Toronto, Canada, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993.
Ezért a programért nem kérhetnek licensz díjat sem most, sem a jövőben a következő cégek: az American
Telephone and Telegraph Company, a Sun Microsystems Inc., a Digital Equipment Inc., a Lotus Development
Inc., a Kaliforniai Egyetem Vezetősége, az X Consortium vagy az MIT, és a Free Software Foundation.
Erre a szoftverre nem vonatkoznak az Egyesült Államok Kereskedelmi Minisztériumának export tilalmai, így
szabadon exportálható bármelyik országba, vagy bármelyik bolygóra.
Bárki használhatja bármilyen célra, bármilyen számítógépen ezt a szoftvert, megváltoztathatja és
továbbadhatja szabadon a következő korlátozásokkal:
1. A szerző nem felelős a szoftver használatának következményeiért, bármilyen súlyosak legyenek is, akkor
sem ha a programban lévő hibából erednek.
2. E szoftver eredetét nem szabad hamisan feltüntetni, sem kifejezett állítással, sem az eredeti szerzők
személyének elhallgatásával. Mivel nagyon kevés felhasználó olvas forrás kódot, a dokumentációnak
tartalmaznia kell a szerzők adatait.
3. Megváltoztatott verziókra világosan fel kell hívni a figyelmet, és nem szabad őket az eredeti
szoftverrel azonosként feltüntetni. Mivel nagyon kevés felhasználó olvas forrás kódot, a dokumentációnak
tartalmaznia kell a szerzők adatait.
4. Ezt a közleményt nem szabad eltávolítani, vagy megváltoztatni.
Néhany ezzel a csomaggal osztott szükséges fájlt
(getopt, strtok) Henry Spencer írt, és a fenti szabályozások vonatkoznak rájuk.
Néhany egyébb fájl (strtol, strchr) szintén ebből a csomagból "public domain" alá tartozik.
A tar.h és is_tar.c fájlokat John Gilmore írta a saját "public-domain" alá tartozó tar programja alapján,
így ezekre nem vonatkoznak a fenti korlátozások.
HIBÁK
Kell legyen egy jobb módja a bűvös fájl automatikus előállításának. Hogy hogyan? Sőt, a bűvös fájlt le
lehetne fordítani valamilyen bináris formátumba (mondjuk pl. ndbm(3) vagy , még jobb, állandó hosszúságú
ASCII karakterláncok formájaba, hogy heterogén hálózati környezetben is lehessen használni) a program
gyorsabb indulása végett. Ekkor a program olyan gyorsan futna mint a Version 7-es változat és mégis
megőrízné a System V változat rugalmasságát.
A file több olyan algoritmust használ, amik elönyben részesítik a gyorsaságot a pontossággal szemben,
ezért a program eredménye néha pontatlan ASCII fájlok esetében.
Az ASCII fájlok támogatottsága (főleg programozási nyelvek esetén) nagyon fapados, nem hatékony, és
változtatás esetén újrafordítást igényel.
Implementálni kellene az ``else'' ágakat.
A bűvös fájlnak és a kulcsszavaknak támogatniuk kellene a szabályos kifejezéseket (regular expressions).
Az ASCII TAB használata mezők elválasztásnál csúnya, és nehéz miatta a fájlok szerkesztése.
Lehet, hogy tanácsos lenne a nagy betűk engedélyezése a kulcsszavakban, pl. troff(1) parancsok a
kézikönyv oldal makrók helyett. Szabályos kifejezések használata ezt egyszerűvé tenné.
A program nem ismeri fel a FORTRAN fájlokat. Felismerhetné őket néhány kulcsszó alapján, amelyek a sor
elején fordulnak elő. Szabályos kifejezések használata ezt is egyszerűvé tenné.
Az ascmagic fájlban található kulcsszavak listája valószínűleg inkább a bűvös fájlba tartozik. Ezt meg
lehetne csinálni pl. egy `*' kulcsszóval az offset érték helyén.
Még egy optimalizálási lehetőség lenne a bűvös fájl rendezése. Így lefuttathatnánk minden tesztet az első
bájtra, az első szóra, az első longra stb. amint azt egyszer beolvastuk. Panaszkodhatna a program ha
összeférhetetlen bejegyzéseket talál a bűvös fájlban. A bűvös fájl bejegyzéseit a fájl offset szerint
kellene rendezni?
A programnak valahogy meg kellene mondania, hogy ``mennyire jó'' az eredmény. Végül figyelmen kívül
hagyna bizonyos találgatásokat (pl. ``From:'' a fájl első 5 karaktere) mert nem olyan biztosak mint más
találgatások (pl. ``Newsgroup:'' a ``Return-Path:''-al szemben.) Amennyiben a többi próba nem jön be, az
első (kevésbé biztos) találat alapján meg lehet mondani milyen fájlról van szó.
Ez a program lassabb mint a mások által forgalmazott file programok.
Ez a kézikönyv oldal, főleg ez a része, túl hosszú.
ELÉRHTŐSÉG
A eredeti program legfrissebb változata elérhető a szerzőnél: ftp://tesla.ee.cornell.edu/pub/file/ , de
ez lehet, hogy nem működik. Megpróbálhatod az ftp://ftp.deshaw.com/pub/file/ -t vagy legvégső esetben az
ftp://ftp.uu.net/pub/FreeBSD/FreeBSD-current/src/usr.bin/file/-t.
Ez a Debian változat megérti a hosszú kapcsolókat, és néhany hibával kevesebb van benne. Elérhető minden
Debian disztibúciót tartalmazó helyről (ftp.debian.org/mirrors).
MAGYAR FORDÍTÁS
Kovács Emese <emese@eik.bme.hu>
Debian/GNU Linux 1997. március 11. FILE(1)