Sie sind auf Seite 1von 6

file

Zur Navigation springen


Zur Suche springen
Dieser Artikel behandelt den Unix-Befehl file. Hingegen ist der Anglizism
file
Basisdaten
Aktuelle Version 5.36[1]
(20. Februar 2019)
Betriebssystem unixoides System
Programmiersprach C[2]
e
Kategorie Kommandozeile
Lizenz 2-Klausel-BSD-Lizenz
deutschsprachig nein
www.darwinsys.
file ist ein traditionelles Unix-Kommando zur Erkennung des Typs oder
MIME-Typs einer Datei.

Inhaltsverzeichnis

1 S
p
G
e B B S
e
z e e i
s
i n i e
c
f u s h
h
2 i 3 t 4 p 5 e 6
i
k z i a
c
a u e u
h
t n l c
t
i g e h
e
o
n
Weblinks Geschichte[Bearbeiten | Quelltext bearbeiten]
Die erste Version von file datiert zurück bis 1973, Unix Research Version 4.
System V beinhaltete schon eine wesentlich verbesserte Version von file,
seit dieser Version wurden die Informationen über die Dateitypen nicht
mehr direkt in die Programmdatei kompiliert, sondern von einer externen
Textdatei (mime magic file) zur Laufzeit eingelesen.
Die heutzutage verbreiteten Unix-Derivate, das heißt vor allem BSD und
Linux, verwenden eine freie Open-Source-Implementierung, die von Ian
Darwin neu geschrieben wurde. Diese Implementierung wurde 1989 von
Geoff Collyer weiterentwickelt und erhielt seitdem verschiedenste
Verbesserungen, unter anderem von berühmten Open-Source-Hackern wie
Guy Harris, Chris Lowth und Eric Fischer. Der aktuelle Betreuer ist Christos
Zoulas.
Spezifikation[Bearbeiten | Quelltext bearbeiten]
Die Single UNIX Specification (SUS) sieht vor, dass eine Implementierung
des Programms file 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
fehlender Dateirechte oder weil sie nicht existiert), ist ihr Typ nicht
feststellbar (undefiniert). file gibt aus, dass die Datei nicht eingelesen
werden konnte.
• file stellt anhand eines stat()-Systemaufrufes fest, um welchen Dateityp
es sich handelt. Unter Unix gibt es außer normalen Dateien noch
Verzeichnisse, FIFOs, Sockets, Blockdateien (block special) und
Zeichendateien (character special).
• Leere Dateien werden als solche festgestellt (zum Beispiel Dateien, die
per touch ohne Inhalt erstellt wurden, oder typischerweise
Sperrdateien).
• 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 als unbekannte Datei (data) bezeichnet.
In zeitgemäßen Implementierungen von file werden in den Tests, in denen
Teile der Datei eingelesen werden, Vergleiche mit einer Textdatenbank
angestellt, die magische Zahlen enthält. Damit unterscheidet sich file von
wesentlich primitiveren Dateityperkennungen, z. B. anhand Dateiendungen
oder MIME-Typ-Angaben.
In den meisten Implementierungen benutzt file eine Datenbank, mit der es
die ersten Bytes einer Datei abgleicht. Diese Datenbank wird üblicherweise
in einer sogenannten magic-Datei (engl., Magisch) gespeichert, welche
typischerweise im Dateisystem unter /etc/magic, /usr/share/file/magic o. ä.
gespeichert wird. Der Umfang dieser Datei ist meist ausschlaggebend für
die Güte der file-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 der Single UNIX Specification konforme Implementierung von file
muss mindestens die folgenden Argumente verarbeiten können:
Befehlszeilenparameter von file
Parameter Bedeutung
Eine eigene „magische“ Datei angeben, die zur Dateityp-Bestimmung
‑ M magicfile
werden dabei übersprungen.
‑ m magicfile Funktioniert genauso wie -M magicfile, nur dass die anderen Tests au
-h Die potentielle Verwendung von Softlinks ausgeben.
Klassifiziert die Datei in eine der folgenden Gruppen: nonexistent, dire
-i link, regular file, empty file, unreadable file, executable, ar archive, ext
programming language source, FORTRAN programming language so
Beispiele[Bearbeiten | Quelltext bearbeiten]
Die folgenden Beispiele zeigen die typischen Ausgaben von file, wenn man
das Programm mit diversen Dateitypen aufruft. Die fiktiven Dateinamen
sollen dabei dem eigenen Dateityp entsprechen. Das Doppelkreuz # soll
andeuten, dass diese Zeile in einer Shell eingegeben werden muss.
# 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
Siehe auch[Bearbeiten | Quelltext bearbeiten]
• binfmt misc: Ein Linux-Kernelmodul, das wie file anhand der ersten Bytes
von Dateien (magic numbers) Dateitypen zu erkennen versucht und
damit Programme erkennt und ausführt.
Weblinks[Bearbeiten | Quelltext bearbeiten]
• file: determine file type – Open Group Base Specification
• POSIX-Funktionsaufruf stat()
• file(1) – OpenBSD General Commands Manual
• file(1) – Debian GNU/Linux Ausführbare Programme oder Shell-Befehle
Handbuchseite
• Sourcecode von file

↑ Release 5.36. 20. Februar 2019 (abgerufen am 20. Februar 2019).
↑ The file Open Source Project on Open Hub: Languages Page. In: Open
Hub. (abgerufen am 17. Juli 2018).
<img src="//de.wikipedia.org/wiki/Special:CentralAutoLogin/start?type=1x1"
alt="" title="" width="1" height="1" style="border: none; position: absolute;" />
Kategorie: Unix-Software

Navigationsmenü
Nicht angemeldet
Diskussionsseite
Beiträge
Benutzerkonto erstellen
Anmelden
Artikel
Diskussion
Lesen
Bearbeiten
Quelltext bearbeiten
Versionsgeschichte
Suche

Hauptseite
Themenportale
Zufälliger Artikel
Mitmachen
Artikel verbessern
Neuen Artikel anlegen
Autorenportal
Hilfe
Letzte Änderungen
Kontakt
Spenden
Werkzeuge
Links auf diese Seite
Änderungen an verlinkten Seiten
Spezialseiten
Permanenter Link
Seiten-informationen
Wikidata-Datenobjekt
Artikel zitieren
Drucken/-exportieren
Buch erstellen
Als PDF herunterladen
Druckversion

In anderen Sprachen
Català
English
Español
‫فارسی‬
Français
Italiano
Polski
Português
Русский
5 weitere
Links bearbeiten
Diese Seite wurde zuletzt am 11. Dezember 2018 um 20:55 Uhr
bearbeitet.
Abrufstatistik
 
 
 Der Text ist unter der Lizenz „Creative Commons
Attribution/Share Alike“ verfügbar; Informationen zu den Urhebern und zum
Lizenzstatus eingebundener Mediendateien (etwa Bilder oder Videos) können im
Regelfall durch Anklicken dieser abgerufen werden. Möglicherweise unterliegen
die Inhalte jeweils zusätzlichen Bedingungen. Durch die Nutzung dieser Website
erklären Sie sich mit den Nutzungsbedingungen und der Datenschutzrichtlinie
einverstanden.
 Wikipedia® ist eine eingetragene Marke der Wikimedia
Foundation Inc.
Datenschutz

Über Wikipedia

Impressum

Entwickler

Stellungnahme zu Cookies

Mobile Ansicht