Soubor (příkaz) - File (command)
Vývojáři | AT&T Bell Laboratories |
---|---|
První vydání | 1973Unix Research verze 4; 1986 open-source reimplementace | jako část
Úložiště | github |
Napsáno | C |
Operační systém | Unix, Unixový, Plán 9, IBM i |
Plošina | Cross-platform |
Typ | Typ souboru detektor |
Licence | Licence BSD, CDDL |
webová stránka | darwinsys |
The soubor
příkaz je standard program z Unix a Unixový operační systémy pro rozpoznání typu dat obsažených v a počítačový soubor.
Dějiny
Původní verze soubor
vznikl v Unix Research verze 4[1] v roce 1973. Systém V přinesl významnou aktualizaci s několika důležitými změnami, zejména přesunutím informací o typu souboru do externího textového souboru, spíše než jeho kompilací do samotného binárního souboru.
Největší major BSD a Linux distribuce používají a volný, uvolnit, open-source reimplementace, kterou v letech 1986-87 napsal Ian Darwin[2] od nuly. Bylo rozšířeno o Geoff Collyer v roce 1989 a od té doby přispěl mnoha dalšími, včetně Guy Harris, Chris Lowth a Eric Fischer; od konce roku 1993 organizuje její údržbu Christos Zoulas. The OpenBSD Systém má vlastní implementaci podmnožiny napsanou od nuly, ale stále používá kolekci informací ve formátu magických souborů Darwin / Zoulas.
The soubor příkaz byl také přenesen do IBM i operační systém.[3]
Specifikace
The Single Unix Specification (SUS) určuje, že se u souboru uvedeného na příkazovém řádku provádí řada testů:
- pokud soubor nelze přečíst nebo jeho Unixový typ souboru je neurčeno,
soubor
program označí, že soubor byl zpracován, ale jeho typ nebyl určen. soubor
musí být schopen určit typy adresář, FIFO, zásuvka, blok speciální pilník a speciální soubor znaků- soubory s nulovou délkou jsou jako takové identifikovány
- považuje se počáteční část souboru a
soubor
je použít testy citlivé na polohu - celý soubor je považován za a
soubor
je použití kontextově citlivých testů - soubor je identifikován jako
data
soubor
soubor
Pozicově citlivé testy se obvykle implementují porovnáním různých umístění v souboru s textovou databází magická čísla (viz část Použití). To se liší od jiných jednodušších metod, jako je přípony souborů a schémata jako MIM.
Ve většině implementací soubor
Příkaz používá databázi k testování sondování bajtů vedení. Tato databáze je implementována do souboru s názvem kouzlo
, jehož umístění je obvykle v / etc / magic
, / usr / share / file / magic
nebo podobné umístění.
Používání
SUS[4] nařizuje následující možnosti:
- -M soubor, specifikujte soubor speciálně formátovaný obsahující testy citlivé na polohu; nebudou provedeny výchozí testy citlivé na polohu a testy citlivé na kontext.
- -m soubor, pokud jde o -M, ale výchozí testy budou provedeny po testech obsažených v
soubor
. - -d, provést výchozí testy citlivé na polohu a kontext citlivé na daný soubor; toto je výchozí chování, pokud -M nebo -m je specifikováno.
- -h, neodvozujte symbolické odkazy které odkazují na existující soubor nebo adresář.
- -L, dereference symbolický odkaz, který odkazuje na existující soubor nebo adresář.
- -i, neklasifikujte soubor dále, než abyste jej identifikovali jako: neexistující, blokový speciální soubor, speciální speciální znak, adresář, a FIFO, soket, symbolický odkaz nebo běžný soubor. Linux[5] a BSD[6] systémy se chovají odlišně s touto možností a místo toho vydávají Typ internetového média (“MIM typu “) identifikující rozpoznaný formát souboru.
jiný Unix a Unixový operační systémy mohou přidat další možnosti než tyto, například -s 'special files', -k „pokračujte“ nebo -r 'raw' (příklady níže).
Příkaz říká pouze to, co je soubor vypadá jako, ne o co jde (v případě, že soubor se podívá na obsah). Je snadné oklamat program vložením magického čísla do souboru, jehož obsah se s ním neshoduje. Příkaz tedy nelze použít jako bezpečnostní nástroj jinak než v konkrétních situacích.
Příklady
$ soubor file.cfile.c: C program text
$ programový program souboru: ELF 32-bit LSB spustitelný, Intel 80386, verze 1 (SYSV ), dynamicky propojeno (používá sdílené libs ), svlékl
$ soubor / dev / hda 1 / dev / hda1: speciální blok (0/0)
$ soubory / dev / hda 1 / dev / hda1: Linux /i386 ext2 souborový systém
Všimněte si, že -s je nestandardní možnost dostupná pouze na některých platformách, což říká soubor
číst soubory zařízení a pokusit se identifikovat jejich obsah, místo aby je pouze identifikoval jako soubory zařízení. Normálně soubor
se nepokouší číst soubory zařízení, protože čtení takového souboru může mít nežádoucí vedlejší účinky.
$ file -k -r libmagic-dev_5.35-4_armhf.deb # (dne Linux ) libmagic-dev_5.35-4_armhf.deb: Binární balíček Debianu (formát 2.0) - aktuální ar archiv - data
Prostřednictvím nestandardní možnosti -k program se nezastaví po prvním nalezeném zásahu, ale hledá další odpovídající vzory -r možnost, která je k dispozici v některých verzích, způsobí netisknutelnost nový řádek znak, který se má zobrazit v syrové podobě, nikoli v osmičkovém vyjádření.
$ soubor compressed.gzcompressed.gz: gzip stlačený data, vypuštěný, originál název souboru, `komprimováno ', poslední změna: Čt 26. ledna 14:08:23 2006, os: Unix
$ file -i compressed.gz # (zapnuto Linux ) compressed.gz: aplikace /X -gzip; znaková sada =binární
$ soubor data.ppmdata.ppm: Netpbm PPM "rawbits" obraz data
$ file / bin / cat / bin / cat: Mach-O univerzální binární s 2 architektury / bin / cat [pro architekturu ppc7400 ): Mach-O spustitelný PPC / bin / cat (pro architektura i386 ): Mach-O spustitelný i386
Libmagic knihovna
Od verze 4.00 verze Iana Darwina / Christose Zoulase z soubor
, funkčnost soubor
je začleněna do a libmagic
knihovna který je přístupný prostřednictvím C (a C-kompatibilní) propojení;[7][8] soubor
je implementováno pomocí této knihovny.[9][10]
Reference
- ^ „Zdroj souboru UNIX V4“ „manuálová stránka“.
- ^ Počáteční historie tohoto programu je zaznamenána v jeho soukromém úložišti CVS; vidět [1] protokol hlavního programu
- ^ IBM. „IBM System i verze 7.2 Programování Qshell“ (PDF). Citováno 2020-09-05.
- ^ Specifikace Open Group Base, vydání 7 - soubor příkaz
- ^ Linux Uživatele Manuál - Uživatelské příkazy –
- ^ NetBSD Obecné příkazy Manuál –
- ^ Linux Programátor Manuál - Funkce knihovny –
- ^ NetBSD Funkce knihovny Manuál –
- ^ Zoulas, Christos (27. února 2003). „file-3.41 je nyní k dispozici“. Soubor (Poštovní seznam). Citováno 1. ledna 2013.
- ^ Zoulas, Christos (24. března 2003). „file-4.00 is now available“. Soubor (Poštovní seznam). Citováno 1. ledna 2013.
externí odkazy
- Specifikace Single UNIX, Vydání 7 od Otevřená skupina : určit typ souboru - reference k příkazům a nástrojům,
- soubor adresáře
- vydání souborů
Ruční stránky
- Plán 9 Programátorská příručka, svazek 1 –
- Linux Příkazy uživatele Manuál –
- NetBSD Funkce knihovny Manuál –
- Linux Funkce knihovny Manuál –
- OpenBSD Obecné příkazy Manuál –
jiný
- Příkaz Fine Free File Domovská stránka pro verzi
soubor
používá se v hlavních distribucích BSD a Linux. - Soubor pro Windows - stránka nativního GnuWin32 přístav
soubor
pro 32 bit Windows. - The balíček libmagic-dev na packages.debian.org
- TrID, alternativa poskytující seřazené odpovědi (místo pouze jedné) na základě statistik.