Was bedeuten „magische Tests“ für den Dateibefehl?

Was bedeuten „magische Tests“ für den Dateibefehl?

Ich habe über den Befehl gelesen fileund 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 fileBefehl 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 filekö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.

verwandte Informationen