fil

fil
Grundläggande information

Underhållare Christos Zoulas
Aktuell  version 5.39
( 15 juni 2020 )
operativ system Unix-liknande system
programmeringsspråk C.
kategori Kommandoradsverktyg
Licens 2-klausul BSD-licens
Tysktalande Nej
www.darwinsys.com/file/

filen är ett Unix-program för att läsa Unix-filtypen, filformatet eller MIME-typen av en fil samt annan information om densamma. Det kan lämna endast de filtyper och MIME-typer tillbringar korrekt känd för det underliggande operativsystemet.

historia

Den första versionen av filen går tillbaka till 1973, Unix Research version 4 . System V innehöll redan en mycket förbättrad version av filen , eftersom den här versionen sammanställdes informationen om filtyperna inte längre direkt i programfilen utan lästes från en extern textfil ( mime-magisk fil ) vid körning .

De nuvarande vanliga Unix-derivaten, det vill säga BSD och Linux , använder en gratis öppen källkod - Implementering av Ian Darwin har skrivits om. Denna implementering utvecklades vidare av Geoff Collyer 1989 och har sedan dess fått olika förbättringar, bland annat från kända open source-hackare som Guy Harris , Chris Lowth och Eric Fischer . Nuvarande handledare är Christos Zoulas.

Specifikation

Den Single UNIX Specification (SUS) föreskriver att en implementering av programmet filen måste en tydlig serie tester med den angivna på kommandoraden fil utföra för att bestämma deras typ:

  • om filen inte kan läsas (till exempel på grund av brist på filrättigheter eller för att den inte finns), kan dess typ inte bestämmas (odefinierad). filen rapporterar att filen inte kunde läsas.
  • filen är baserad på ett stat()- systemanrop bestämmer vilken typ av fil det är. Förutom vanliga filer, har Unix också kataloger , FIFO , uttag , blockera filer ( blockera speciella ) och teckenfiler ( karaktär speciella ).
  • Tomma filer identifieras som sådana (till exempel filer skapade touchutan innehåll eller låser vanligtvis filer ).
  • filen läser i de första byten eller hela filen och försöker bestämma filtypspecifika mönster för att ta reda på filtypen på detta sätt.
  • Om ingen av metoderna resulterade i en bestämning av filtypen kallas filen en okänd fil (data) .

I samtida implementeringar av filer jämför tester som läser delar av filen med en textdatabas som innehåller magiska siffror . Detta skiljer fil från mycket mer primitiva filtypsidentifierare, t.ex. B. använder filtillägg eller MIME-typspecifikationer .

I de flesta implementeringar använder filen en databas mot vilken den jämför de första bytes i en fil. Denna databas används vanligtvis i en så kallad magi (fil engl. , Magical) lagras, som vanligtvis finns i filsystemet under /etc/magic, /usr/share/file/magiclagras o. Ä .. Storleken på den här filen är oftast avgörande för kvaliteten på filen tester för att bestämma även exotiska filtyper.

använda sig av

filen , som de flesta Unix-kommandon, kan användas nästan intuitivt. Ett samtal körs enligt schemat

file [Optionen] Datei

En implementering av en fil som överensstämmer med den enskilda UNIX-specifikationen måste kunna bearbeta åtminstone följande argument:

Kommandoradsparametrar för filen
parameter menande
‑M magicfile Ange din egen "magiska" fil som ska användas för att bestämma filtypen. De tester som normalt utförs hoppas över.
‑m magicfile Fungerar på samma sätt , förutom att de andra testerna också görs. -M magicfile
-h Rapportera den potentiella användningen av mjuklänkar .
-i Klassificerar filen i en av följande grupper: obefintlig, katalog , FIFO , socket , block special , tecken special , symbolisk länk , vanlig fil, tom fil, oläsbar fil, körbar , ar arkiv , utökat cpio format , utökat tjära format , skal manus , C programmeringsspråk källa , FORTRAN programmeringsspråk källa , datafil

Exempel

Följande exempel visar den typiska utsignalen från filen när programmet anropas med olika filtyper. De fiktiva filnamnen bör motsvara din egen filtyp. Den brittiska # är avsedd att indikera att denna rad måste anges i ett skal .

# 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

Se även

  • binfmt misc : En Linux - kärnmodul , som som fil baserad på de första byte av filer ( magiska siffror ) filtyper kommer att försöka upptäcka och känna igen program och körningar.

webb-länkar

Individuella bevis

  1. Släpp 5.39 . 15 juni 2020 (nås 15 juni 2020).
  2. ^ Filen Open Source Project på Open Hub: Sidan Språk . I: Open Hub . (nås den 17 juli 2018).
  3. FIL (1). I: Debian Manpages. Hämtad 20 februari 2021 .