Ich habe über den Befehl gelesen file
und bin auf etwas gestoßen, das ich nicht ganz verstehe:
file ist dafür ausgelegt, die Art der abgefragten Datei zu bestimmen.... file erreicht dies durch die AusführungdreiTestsätze für die betreffende Datei:
- Dateisystemtests,
- MagiePrüfungen,
- Sprachtests
Was sindMagieTests?
Antwort1
"Magie" bezieht sich hier auf "magische Zahlen": ein spezieller Wert, der an einer bekannten Stelle in einer Datei steht und seinen Typ identifiziert. Der file
Befehl verfügt über eine Datenbank dieser Nummern und den Typ, dem sie entsprechen. Die Bibliothek, die zu dieser Datenbank gehört, heißtAbonnieren, und Sie können von Ihren eigenen Programmen darauf zugreifen.
Es handelt sich dabei nicht unbedingt um „Zahlen“, wie wir sie uns vorstellen. Eine PNG-Bilddatei beginnt beispielsweise immer mit „\x89PNG\r\n\x1a\n“, eine Java-Klasse beginnt mit den vier Bytes (hexadezimal) CA FE BA BE und eine HTML-Datei hat irgendwo am Anfang „<html“. Es handelt sich lediglich um eine kleine Datensequenz, von der bekannt ist, dass sie in einer Datei dieses Typs enthalten ist, normalerweise ganz am Anfang.
Wenn Leute Dateiformate definieren, schließen sie oft eines davon ein, entweder absichtlich oder nur, um das Format zusammenzufügen. Sie file
können sie später verwenden. Es gibt auch andere Möglichkeiten, den Inhalt der Datei tatsächlich zu betrachten, um zu erraten, was es ist („Sprachtests“).
Antwort2
Gemeint sind damit die „Magic Bytes“, die bei vielen Dateiformaten am Anfang einer Datei stehen und die anzeigen, um welche Art von Datei es sich handelt.
Wenn eine Datei beispielsweise mit beginnt, #!
wird sie als Skript betrachtet.