file

aus Wikipedia, der freien Enzyklopädie
Zur Navigation springenZur Suche springen
Dieser Artikel behandelt das Unix-Programmfile. Im Speziellen ist(data) file der englische Begriff fürDatei, im Allgemeinen für eineAkte oderKartei. Siehe auchFilé,Filet bzw.Phile.
file

Beispiel
Beispiel
Basisdaten

HauptentwicklerChristos Zoulas
Aktuelle Version5.46[1]
(27. November 2024)
BetriebssystemUnix-ähnliches System
Programmier­spracheC[2]
KategorieBefehlszeilenprogramm
Lizenz2-Klausel-BSD-Lizenz
deutschsprachignein
darwinsys.com/file/

file ist einUnix-Programm zum Auslesen des Unix-Dateityps, desDateiformats oder desMIME-Typs einerDatei sowie anderer Informationen über selbige. Dabei kannfile lediglich jene Dateiformate und MIME-Typen korrekt ausgeben, die dem zugrundeliegenden Betriebssystem bekannt sind.[3]

Inhaltsverzeichnis

Geschichte

[Bearbeiten |Quelltext bearbeiten]

Die erste Version vonfile datiert zurück bis 1973,Unix Research Version 4.System V beinhaltete schon eine wesentlich verbesserte Version vonfile, seit dieser Version wurden die Informationen über die Dateitypen nicht mehr direkt in dieProgrammdatei kompiliert, sondern von einer externen Textdatei (mime magic file) zurLaufzeit eingelesen.

Die heutzutage verbreiteten Unix-Derivate, das heißt vor allemBSD undLinux, verwenden eine freieOpen-Source-Implementierung, die vonIan Darwin neu geschrieben wurde. Diese Implementierung wurde 1989 vonGeoff Collyer weiterentwickelt und erhielt seitdem verschiedenste Verbesserungen, unter anderem von berühmten Open-Source-Hackern wieGuy Harris,Chris Lowth undEric Fischer. Der aktuelle Betreuer ist Christos Zoulas.

Spezifikation

[Bearbeiten |Quelltext bearbeiten]

DieSingle UNIX Specification (SUS) sieht vor, dass eine Implementierung des Programmsfile eine fest definierte Reihe von Tests mit der auf der Kommandozeile angegebenen Datei durchführen muss, um damit ihren Typ festzustellen:

  • wenn die Datei nicht gelesen werden kann (beispielsweise aufgrund fehlenderDateirechte oder weil sie nicht existiert), ist ihr Typ nicht feststellbar (undefiniert).file gibt aus, dass die Datei nicht eingelesen werden konnte.
  • file stellt anhand einesstat()-Systemaufrufes fest, um welchen Dateityp es sich handelt. Unter Unix gibt es außer normalen Dateien nochVerzeichnisse,FIFOs,Sockets,Blockdateien (block special) undZeichendateien (character special).
  • Leere Dateien werden als solche festgestellt (zum Beispiel Dateien, die pertouch ohne Inhalt erstellt wurden, oder typischerweiseSperrdateien).
  • file liest die ersten Bytes bzw. die ganze Datei ein und versucht, dateitypspezifische Muster festzustellen, um auf diese Weise den Dateityp in Erfahrung zu bringen.
  • Wenn keine der Methoden zu einer Bestimmung des Dateityps geführt hat, wird die Datei alsunbekannte Datei (data) bezeichnet.

In zeitgemäßen Implementierungen vonfile werden in den Tests, in denen Teile der Datei eingelesen werden, Vergleiche mit einer Textdatenbank angestellt, diemagische Zahlen enthält. Damit unterscheidet sichfile von wesentlich primitiveren Dateityperkennungen, z. B. anhandDateiendungen oderMIME-Typ-Angaben.

In den meisten Implementierungen benutztfile eineDatenbank, mit der es die ersten Bytes einer Datei abgleicht. Diese Datenbank wird üblicherweise in einer sogenanntenmagic-Datei (engl., Magisch) gespeichert, welche typischerweise imDateisystem unter/etc/magic,/usr/share/file/magic o. ä. gespeichert wird. Der Umfang dieser Datei ist meist ausschlaggebend für die Güte derfile-Tests zur Bestimmung auch exotischer Dateitypen.

Benutzung

[Bearbeiten |Quelltext bearbeiten]

file lässt sich, wie die meisten Unix-Kommandos, quasi intuitiv benutzen. Ein Aufruf läuft nach dem Schema

file[Optionen]Datei

Eine derSingle UNIX Specification konforme Implementierung vonfile muss mindestens die folgenden Argumente verarbeiten können:

Befehlszeilenparameter vonfile
ParameterBedeutung
‑M magicfileEine eigene „magische“ Datei angeben, die zur Dateityp-Bestimmung benutzt werden soll. Die normalerweise durchgeführten Tests werden dabei übersprungen.
‑m magicfileFunktioniert genauso wie-Mmagicfile, nur dass die anderen Tests auch durchgeführt werden.
-hDie potentielle Verwendung vonSoftlinks ausgeben.
-iKlassifiziert die Datei in eine der folgenden Gruppen:nonexistent,directory,FIFO,socket,block special,character special,symbolic link, regular file, empty file, unreadable file,executable,ar archive,extended cpio format,extended tar format,shell script,C programming language source,FORTRAN programming language source, data file

Beispiele

[Bearbeiten |Quelltext bearbeiten]

Die folgenden Beispiele zeigen die typischen Ausgaben vonfile, wenn man das Programm mit diversen Dateitypen aufruft. Die fiktivenDateinamen sollen dabei dem eigenen Dateityp entsprechen. DasRautezeichen# soll andeuten, dass diese Zeile in einerShell eingegeben werden muss.

# file file.cfile.c: C program text# file programprogram: 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.gzcompressed.gz: gzip compressed data, deflated, original filename, `compressed', last    modified: Thu Jan 26 14:08:23 2006, os: Unix# file data.ppmdata.ppm: Netpbm PPM "rawbits" image data

Siehe auch

[Bearbeiten |Quelltext bearbeiten]
  • binfmt misc: EinLinux-Kernelmodul, das wiefile anhand der ersten Bytes von Dateien (magic numbers) Dateitypen zu erkennen versucht und damit Programme erkennt und ausführt.

Weblinks

[Bearbeiten |Quelltext bearbeiten]

Einzelnachweise

[Bearbeiten |Quelltext bearbeiten]
  1. [File] FIle 5.46 is now available. 27. November 2024 (abgerufen am 28. November 2024).
  2. The file Open Source Project on Open Hub: Languages Page. In:Open Hub. (abgerufen am 17. Juli 2018).
  3. FILE(1). In: Debian Manpages (Debian Handbuchseiten). Abgerufen am 20. Februar 2021 (englisch). 
Abgerufen von „https://de.wikipedia.org/w/index.php?title=File&oldid=249409794
Kategorie: