it-swarm.com.de

Welche Beziehung besteht zwischen MIME-Typen und Dateierweiterungen?

Ich kann die falsche Idee hier haben, aber ich dachte, dass:

MIME-Typen sind eingebettete Identifikationscodes innerhalb einer Datei.
Dateierweiterungen sind Identifikationscodes, die an das Name der Datei angehängt werden.

Ich dachte, nach etwas, was ich in den dunklen Zeiten gehört habe, dass Linux .extension-agnostisch ist ... (Vielleicht war es in den frühen Tagen, und die Dinge haben sich seitdem geändert ...?)

Ich komme vor kurzem aus der Windows-Welt, in der auf der Ebene Betriebssystem eine Dateierweiterung die einzige Möglichkeit ist (soweit ich weiß), sie mit dem entsprechenden Anwendungsprogramm zu verknüpfen.

Da ich warum nicht weiß, finde ich es etwas beunruhigend, dass eine Datei mit dem Namen "fred" nd eine Datei mit dem Namen "fred.txt" in einem Text geöffnet wird Editor.

Gibt es hier eine klare Hierarchie?

19
Peter.O

MIME-Typen sind nur eine Möglichkeit, Typen zu benennen. Sie haben nichts damit zu tun, wie der Dateityp bestimmt wird.

Es gibt zwei Möglichkeiten, den Dateityp zu bestimmen: a) Sehen Sie sich die Dateierweiterung an und hoffen Sie, dass sie korrekt ist, oder b) schauen Sie sich den Inhalt an und raten Sie daraufhin. Wenn eine Datei keine Erweiterung hat, ist b die einzige Option.

Viele (binäre) Dateiformate haben einen bestimmten Header, anhand dessen Sie den Typ bestimmen können. Dies macht Option b für diese Typen recht zuverlässig.

Nur-Text-Dateiformate können häufig durch ihre Struktur bestimmt werden (wenn eine Datei viele HTML-Tags enthält, handelt es sich wahrscheinlich um eine HTML-Datei).

Auf Unix- und Linux-Systemen können Sie mit dem Befehlszeilendienstprogramm file den Dateityp anhand seines Inhalts ermitteln.

Der Dateimanager verwendet häufig eine Kombination aus Option a und b (schauen Sie sich beispielsweise zuerst die Dateierweiterung an. Wenn diese nicht bekannt ist (oder die Datei keine Erweiterung hat), schauen Sie sich den Inhalt an.).

Der Dateityp wird auf gängigen Linux-Dateisystemen nicht als Metadaten gespeichert.

15
sepp2k

Unter Linux ist die Dateierweiterung Teil des Dateinamens und bedeutet für das Betriebssystem eigentlich nichts. Ein MIME-Typ ist eine Beschreibung des Inhalts der Datei. fred und fred.txt hätten beide den MIME-Typ text/plain.

Dateimanager wie Nautilus verwenden diesen MIME-Typ, um zu ermitteln, mit welchem ​​Programm die Datei geöffnet werden soll. In einem Terminal macht der Befehl xdg-open dasselbe. Dies ist jedoch die Benutzerspeicherebene und nicht die Betriebssystemebene.

Dateien enthalten diesen MIME-Typ eigentlich nicht, aber die Programme, die sie öffnen, verwenden verschiedene Methoden, um herauszufinden, um welchen MIME-Typ es sich handelt. Einige basieren nur auf der Dateierweiterung, die meisten verwenden jedoch eine Mischung aus Techniken, einschließlich des Betrachtens der Daten am Anfang der Datei.

Wenn der Anfang der Datei nur Bytes enthält, die als ASCII -Zeichen dargestellt werden können, ist davon auszugehen, dass es sich um eine Textdatei handelt. Wenn die Erweiterung dann so etwas wie .html ist, geht das Programm davon aus, dass es sich um eine HTML-Seite handelt, und öffnet sie daher mit einem Webbrowser. Dasselbe gilt für Binärdateiformate. Ich weiß zum Beispiel, dass das Bitmap-Dateiformat mit 'BMP' in ASCII beginnt, gefolgt von Binärdaten, die das Bild darstellen.

Einfach gesagt, machen Linux-Programme eine fundierte Vermutung basierend auf den Daten in einer Datei und ihrer Dateierweiterung. Dies mag nicht sehr zuverlässig klingen, aber die verwendeten Algorithmen sind komplizierter als die von mir angegebenen Beispiele und tatsächlich sehr genau.

14
dv3500ea

In der Linux-Welt sind Dateierweiterungen nur ein Indikator für den Dateityp. Es gibt ein Befehlszeilentool namens "file", das den Typ einer Datei errät.

Um diesen Typ zu erhalten, gibt es hauptsächlich 3 Indikatoren:

  • Die Erweiterung
  • Spezielle Attribute im Dateisystem (zB für Sym- oder Hardlinks, Ordner, Eingabegerät etc.)
  • Der Inhalt
    • Binär (wie ELF-Informationen in ausführbaren Dateien)
    • Text (wie <html>, #!/bin/bash)

Die Beziehung zwischen dem Dateityp und dem MIME-Typ besteht darin, dass MIME nur ein Standard zur Darstellung des Dateityps ist (wie text/css).

Linux "errät" den Dateityp und öffnet ein zugehöriges Programm für diesen Typ.

5
Lincoln