file
verwendet verschiedene Arten von Tests :
1: Wenn die Datei nicht vorhanden ist, nicht gelesen werden kann oder der Dateistatus nicht ermittelt werden konnte, zeigt die Ausgabe an, dass die Datei verarbeitet wurde, ihr Typ jedoch nicht ermittelt werden konnte.
Dies wird ausgegeben wie cannot open file: No such file or directory
.
2: Wenn es sich bei der Datei nicht um eine reguläre Datei handelt, muss der Dateityp angegeben werden. Die Dateitypen Verzeichnis, FIFO, Socket, Block Special und Character Special sind als solche zu kennzeichnen. Andere implementierungsdefinierte Dateitypen können ebenfalls identifiziert werden. Wenn die Datei eine symbolische Verknüpfung ist, wird die Verknüpfung standardmäßig aufgelöst und die Datei testet den Dateityp, auf den die symbolische Verknüpfung verweist. (Siehe die -h
und -i
Optionen unten.)
Dies wird ausgegeben wie .: directory
und /dev/sda: block special
. Ein Großteil des Formats für diesen und den vorherigen Punkt wird teilweise von POSIX definiert - Sie können sich darauf verlassen, dass bestimmte Zeichenfolgen in der Ausgabe enthalten sind.
3: Wenn die Länge der Datei Null ist, wird sie als leere Datei identifiziert.
Das ist foo: empty
.
4: Das Dateidienstprogramm soll ein erstes Dateisegment untersuchen und anhand von positionssensitiven Tests eine Vermutung zur Identifizierung seines Inhalts anstellen. (Es wird nicht garantiert, dass die Antwort korrekt ist. Siehe die Optionen -d, -M und -m weiter unten.)
5: Das Dateidienstprogramm soll die Datei untersuchen und anhand von kontextsensitiven Standardsystemtests eine Vermutung anstellen, ob der Inhalt vorhanden ist. (Die Antwort ist nicht garantiert korrekt.)
Diese beiden verwenden die magische Nummernidentifikation und sind der interessanteste Teil des Befehls. Eine magische Zahl ist eine spezielle Folge von Bytes, die sich an einer bekannten Stelle in einer Datei befindet und deren Typ identifiziert. Traditionell sind dies die ersten zwei Bytes, aber der Begriff wurde noch erweitert, um längere Zeichenfolgen und andere Positionen einzuschließen. Weitere Informationen zu magischen Zahlen im Befehl finden Sie in dieser anderen Fragefile
.
Der file
Befehl verfügt über eine Datenbank mit diesen Nummern und dem Typ, dem sie entsprechen. Diese Datenbank befindet sich normalerweise in /usr/share/mime/magic
und ordnet den Dateiinhalten MIME-Typen zu . Die Ausgabe dort (oft ein Teil davon, file -i
wenn Sie sie nicht standardmäßig erhalten) ist ein definierter Medientyp oder eine Erweiterung. "Kontextsensitive Tests" verwenden den gleichen Ansatz, sind jedoch etwas unübersichtlicher. Keines davon ist garantiert richtig, aber es ist beabsichtigt, gute Vermutungen anzustellen.
file
verfügt außerdem über eine Datenbank, die diese Typen Namen zuordnet, anhand derer bekannt ist, dass eine identifizierte Datei als bezeichnet werden application/pdf
kann PDF document
. Diese für Menschen lesbaren Namen können auch in eine andere Sprache übersetzt werden. Hierbei handelt es sich immer um eine allgemeine Beschreibung des Dateityps in einer Weise, die eine Person verstehen wird, und nicht um eine Maschine.
Die meisten unterschiedlichen Ausgaben, die Sie erhalten können, stammen aus diesen Phasen. In der magic
Datei finden Sie eine Liste der unterstützten Typen und deren Identifizierung. Mein System kennt 376 verschiedene Typen. Die angegebenen Namen und die unterstützten Typen werden von der Systemverpackung und -konfiguration bestimmt. Daher unterstützt Ihr System möglicherweise mehr oder weniger als meins, aber im Allgemeinen gibt es viele davon. libmagic
enthält auch zusätzliche hartcodierte Tests.
6: Die Datei ist als Datendatei zu kennzeichnen.
Dies ist foo: data
, wenn es überhaupt nichts über die Datei herauszufinden.
Es gibt auch andere kleine Tags, die angezeigt werden können. Eine ausführbare ( +x
) - Datei wird executable
in der Ausgabe " " normalerweise durch Kommas getrennt. Die file
Implementierung kann auch zusätzliche Informationen zu einigen Dateiformaten enthalten, um zusätzliche Informationen zu diesen Formaten wie in " PDF document, version 1.4
" beschreiben zu können.