„File (Unix)” változatai közötti eltérés

Tartalom törölve Tartalom hozzáadva
Csikigeza (vitalap | szerkesztései)
Új oldal, tartalma: „{{kisbetűscím}} A '''<tt>file</tt>''' egy standard Unix parancs, mely a fájl típusának meghatározására használható. == Története == Minden UNIX tartalmaz…”
(Nincs különbség)

A lap 2009. június 6., 14:28-kori változata

A file egy standard Unix parancs, mely a fájl típusának meghatározására használható.

Története

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.

Használata

A parancs általános alakja: file [ -vczL ] [ -f fájlnévlista ] [ -m bûvösfájl ] fájlnév ...

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 karaktereket tartalmaz, és valószínüleg olvasható 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 fájlrendszer tesztek eredménye a stat 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 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 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).


Példák

# 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/wd0a
/dev/wd0a: block special (0/0)

# file -s /dev/hda1
/dev/hda1: Linux/i386 ext2 filesystem

# file -s /dev/hda5
/dev/hda5: Linux/i386 swap file

# file compressed.gz
compressed.gz: gzip compressed data, deflated, original filename, `compressed', last
    modified: Thu Jan 26 14:08:23 2006, os: Unix

# file data.ppm
data.ppm: Netpbm PPM "rawbits" image data