file(1)


NÉV

file - meghatározza a file típusát

HASZNÁLAT

file [ -c ] [ -z ] [ -L ] [ -f névfile ] [ -m varázsfile ] file ...

LEIRÁS

A File parancs megvizsgálja az összes argumentumot, hogy osztályozza a file-okat. A teszteknek három csoportja van, a következô sorrendben: filerendszer tesztek, varázsszám tesztek és nyelvi tesztek. A  legelsô sikeres teszt után kiírja a file típusát.

A képernyôre került típus általában tartalmazza a következô szavak valamelyikét: text (az állomány csak ASCII karaktereket tartalmaz és valószínuleg biztonságosan olvasható egy ASCII terminálon), executable (az állomány egy a UNIX vagy más kernel által értelmezhetô kódfordítást tartalmaz), vagy data az egyéb állományoknál (a data általában  `binary' típusú vagy nem nyomtatható). Kivételt képeznek az ún. jól ismert állományformátumok (core állományok, tar arhívumok) amikrôk tudjuk, hogy bináris adatot tartalmaznak. Ha megváltoztatjuk az  /etc/magic állományt vagy magát a programot, ôrizzük meg ezeket a kulcsszavakat. Fontos tudni, hogy az összes egy könyvtárban lévô olvasható állomány kiíratja a "text" szót. Ne változtassuk meg a "shell commands text" -et "shell script" -re - mint ahogy azt a Berkeley tette.

A filerendszer tesztek egy stat (2) rendszer hívás visszatérési értékének vizsgálatán alapulnak. A program ellenôrzi, hogy üres -e az állomány, vagy valamilyen speciális file.Minden ismert file típust, amely értelmezhetô az éppen futó rendszerben (sockets, szimbolikus linkek, vagy pipe-ok (FIFO -k) azokon a rendszereken amelyek megvalósítják) felismer, amennyiben definiálva vannak a rendszer header állományában: sys/stat.h .

A varázsszám (magic number) tesztek a speciális, rögzített formátumú fájlokat keresik. A legtipikusabb példa erre egy bináris futtatható (lefordított forrásprogram) a.out állomány, aminek a formátuma az a.out.h, esetleg az exec.h állományban van definiálva, a standard include könyvtárban. Ezeknek az állományoknak van egy ún. 'varázsszám'-uk, egy speciális helyen eltárolva, közel azokhoz a file-okhoz, melyek meghatározzák a UNIX számára, hogy az állomány bináris futtatható -e és - ha igen - azon belül milyen típus. A varázsszámok koncepciója abból az igénybôl származik, hogy az adat file-okat is különböztessük meg. Segítségükkel minden állomány jellemezhetô egy kisméretû konstans azonosítóval. Ezeknél az állományoknál az információt  /etc/magic varázs állományból olvassa.

Ha egy argumentum file-nak tûnik, a file parancs meghatározza a nyelvét. A nyelvi teszt jellemzô karakterláncokat keres (cf names.h) amelyek bárhol lehetnek az állomány elsô néhány blokkjában. Például, a .br kulcsszó jelzi, hogy a file valószínüleg egy troff bemeneti állomány, úgymint a struct kulcsszó, amely C programra utal. Ezek a tesztek kevésbé megbízhatóak mint a korábbi kettô, ezért ezek futnak le utoljára. A nyelvi teszt eljárás megvizsgálja még a vegyes állományokat is (pl.: tar arhívumokat) és jelzi, ha egy ismeretlen filet szerinte "ascii text" -nek, vagy "data" -nak kellene jelölni..

A -m file hatására a varázsszámokat a megadott file-ban keresi.

A -z megpróbál a tömörített file -ok belsejébe nézni.

A -c paraméter elemzi és ellenôrzi a varázs file kimenetét. Ezt általában a  -m paraméterrel együtt használjuk, hogy hibamentesítsük az új varázs állományunkat.

A -f namefile paraméter hatására a vizsgálandó állományok nevét a namefile paraméterrel megadott file -ból olvassa soronként, az argumentum lista elôtt. Vagy a namefile vagy legalább egy filenév legyen megadva; amennyiben a standard bemenetet akarjuk tesztelni, használjuk a "-" jelet file argumentumnak.

A -L hatására követi a szimbolikus linkeket, úgy mint az ls parancs -named paraméterrel. ls (1).

ÁLLOMÁNYOK

/etc/magic - a varázsszámok eredeti listája

LÁSD MÉG

magic (1) - a varázs file formátum leírása.
Strings (1), od (1) - nem szöveges állományok vizsgálatához használható eszközök.

SZABVÁNY MEGFELELÉSEK

Jelen program reményeink szerint megfelel a FILE(CMD) parancs System V Interface beli definíciójának, már amennyire az ott fellelhetô homályos leírásnak meg lehet felelni. Viselkedése nagyjából compatibilis az azonos nevû System V programmal, habár ez a verzió több varázst tud, ezért produkálhat eltérô (pontosabb) meghatározásokat.

Az egyetlen jelentôs különbség a mi verziónk és a System V között, hogy ez a verzió minden szóköz jelet elválasztójelként kezel, ezért a szóközöket a mintaszövegben escape -el kell jelölni.Például,
>10 string language impress (imPRESS data)
egy már létezô varázs állományban a következôre cserélendô
>10 string language\ impress (imPRESS data)
Továbbá, ebben a verzióban, ha egy mintaszöveg backslash-t tartalmaz, azt szintén escape-el kell jelölni. Például,
0 string \begindata Andrew Toolkit document
egy már létezô varázs állományban a következôre cserélendô
0 string \\begindata Andrew Toolkit document

SunOS 3.2 fejlesztések és a késôbbi Sun Microsystems kiadások tartalmaznak egy file (1) parancsot, ami a System V -bôl származik, de vannak bizonyos bôvítések benne. Ez a verzió csak kismértékben különbözik a Sun -étól. Benne van pl. az '&' operátor, amit a következôképp lehet használni:
>16 long&0x7fffffff >0 not stripped

MAGIC KÖNYVTÁR

A varázsfile tartalma sok forrásból gyûlt össze, fôleg a USENET -rôl  és több más szerzôtôl. Christos Zoulas (címét lásd lejjebb) gyûjt további ill. javító varázsfile bejegyzéseket. A varázsfile bejegyzések javításán folyamatosan dolgozunk.

Fontos a bejegyzések sorrendje a varázsfile-ban. Bizonyos rendszereken a jelenlegi sorrend hibás lehet. Amennyiben van a rendszeren régi file parancs, tartsa meg összehasonlítási célokból. (nevezze át /etc/magic.orig -ra).

TÖRTÉNET

Minden UNIX -ban volt file parancs már a 6. Fejlesztô Verziótól kezdve. (a man oldal dátuma 1975. január). A System V verzió egy lényeges változást hozott: a varázsszám típusok külsô listáját. Ez lasította a programot, viszont sokkal rugalmasabb lett tôle.

Ezt a programot, amely a System V verzión alapul, Ian Darwin írta és semmilyen módon nem használt fel más forrásprogramot.

John Gilmore nézte át alaposan a kódot, jobbá téve az elsô verziónál. Geoff Collyer talált néhány found several hiányosságot és készített néhány varázsfile bejegyzést. A program azóta is folyamatosan fejlôdik.

SZERZÔK

Írta Ian F. Darwin, UUCP cím {utzoo | ihnp4}!darwin!ian, Internet cím ian@sq.com, postacím: P.O. Box 603, Station F, Toronto, Ontario, CANADA M4Y 2L8.

Fejlesztette Rob McMahon, cudcv@warwick.ac.uk, 1989, to extend the `&' operator from simple `x&y != 0' to `x&y op z'.

Fejlesztette Guy Harris, guy@auspex.com, 1993, to:

visszaállította a "régi-stílusú" '&' operátort, mert 1) Rob McMahon változtatása megtörte a korábbi használati módot, 2) a SunOS "új-stílusú" '&' operátorja, amelyet a file parancs jelen verziója is támogat, szintén kezeli: `x&y op z', és 3) Rob változtatása egyáltalán nem volt dokumentálva;

'>' további szintjei berakva;

"beshort", "leshort", stb. kulcsszavak berakva, hogy a file -okban lévô számokat speciális byte sorrendben lássa, semmint a file parancsot futtató processz eredeti byte sorrendjében.

További változtattások: Ian Darwin és további szerzôk, valamint Christos Zoulas (christos@ee.cornell.edu), 1990-1992.

JOGI MEGJEGYZÉSEK

Copyright (c) Ian F. Darwin, Toronto, Canada, 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993.

Erre a szoftverre nem vonatkozik, és nem vonatkoztatható az AT&T, a Sun Microsystems, a Digital Equipment, a Lotus Development, a Regents of the University of California, az X Consortium, a MIT, vagy a Free Software Foundation semmilyen licensze.

Erre a szoftverre nem vonatkoznak az USA Kereskedelmi Minisztériumának export intézkedései, és minden országba vagy bolygóra exportálható.

A program bárki által bármilyen célra, bármilyen számítógéptípuson használható, módosítható és szabadon továbbterjeszthetô, az alábbi megkötésekkel:

1.A szerzô nem vállal felelôsséget a program használatának következményeiért, legyenek azok bármilyen szörnyuek, akkor sem, ha azok programhibából erednek.

2.A szoftver eredete sem szándékosan sem mulasztásból eredôen nem tüntethetô fel hamisan.Mivel nagyon kevés felhasználó olvassa el a forrást, a dokumentációban szerepelnie kell azoknak, akik közremuködtek a program létrehozásában.

3.A módosított verziókat egyértelmuen meg kell jelölni és nem szabad azokat eredetiként feltüntetni.Mivel nagyon kevés felhasználó olvassa el a forrást, a dokumentákcióban szerepelnie kell azoknak, akik közremuködtek a program módosításában.

4.Ezt a megjegyzést nem szabad eltávolítani vagy módosítani.

A csomagban néhány fájl (getopt, strtok) szerzôje Henry Spencer , ezekre is a fentiek az érvényesek.

Van még további néhány egyszeru public domain fájl (strtol, strchr); és megfelôképpen meg vannak jelölve.

John Gilmore public-domain tar programjából származnak a tar.h és is_tar.c fájlok, és nem vonatkoznak rájuk a fenti megkötések.

ISMERT HIBÁK

Jobb mód kellene a MAgic fájl elkészítésének automatizálásához Magdirban az összes masszából. Hogy mit jelent ez? Leginkább a magic fájlt kellene bináris módba szerkeszteni(mondjuk ndbm (3)-ba vagy még inkább fix hosszú ASCII stringek kellenének a különbözô hálózati környezetek használatához) a gyorsabb indulás miatt. Akkor az azonos nevu Version 7 program gyorsaságával futna, megtartva a System V verzió hajlékonyságát.

Fájl saját algoritmust használ, amely a pontosság felett a sebességnek kedvez, így félrevezethet az ASCII fájlok tartalmárol.

Az ASCII fájlok támogatása (elsôsorban a programnyelveké) primitív, nem megfelelô és újrafordítás szükséges a korszerusítéshez.

Egy ``else'' kikötés kellene a folyamatos sorok sorozatának követéséhez.

A magic fájlnak és kulcsszavaknak pontos kifejezésu segítségnek kellene lennie. Az ASCII TAB használata, mint elválasztó mezô, csúnya, keményen szerkeszti a fájlt, de még elmegy.

Ajánlatos lenne megengedni a nagybetuket a kulcsszavakban pl. troff parancsok vs man lapjának nagyjait.

A program nem tünteti ki a FORTRAN-t. Szerepelhetne a FORTRAN néhany kulcsszó tekintetében, amelyek azonosnak tunnek a sorok kezdetekor. A pontos kifejezésu segítség ezt könnyuvé tenné.

Az ascmagic kulcsszavak listája talán a Magic fajlhoz tartozik. Ezt lehetne tenni néhány kulcsszó használatakor, mint a `*' az eltolási értéknél.

Másik optimalizáció lenne a magic file rendezése úgy, hogy csak lefuttatnánk az összes tesztet az elsô bájt, az elsô word, az elsô long stb. elôtt, mihelyst elkaptuk. Panaszkodnak a magic fájlbeli bejegyzések ellentmondásairól. Megfogadni, hogy a magic bejegyzést inkább fájl eltolásos alapon rendezni, mint elhelyezni a magic fájlon belül?

A programnak lehetôsséget kellene rá adnia, hogy megmondjuk, milyen jó egy becslés. Befejezzük a távoli becsléseket (pl. ``From '' mint a fájl elsô 5 karaktere), mert nem olyan jók, mint más becslések (pl. ``Newsgroups:'' Return-Path: ellen). Ennek ellenére, ha a másik nem sikerül, lehetséges lenne az elsô becslés használata.

Ez a program lassabb, mint néhány vendors' fájl parancsok.

Ez a manual lap, és különösen ez a szakasz túl hosszú.

ELÉRHETÔSÉG

Hozzájuthatsz az eredeti szerzô utolsó verziójához anonymus FTP-n a tesla.ee.cornell.edu-n a /pub/file-X.YY.tar.gz könyvtárban.