Jaki jest związek między typami MIME a rozszerzeniami plików?

19

Może mam tutaj zły pomysł, ale pomyślałem, że:

Typy MIME to kody identyfikacyjne osadzone w pliku.
.Extensions plików są idenifying kody, przyrostek do pliku w nazwie .

Pomyślałem, że z czegoś, co słyszałem w ciemnych wiekach, Linux był agresywny.

Niedawno pochodzę ze świata Windows, gdzie na poziomie systemu operacyjnego plik .rozszerzenie jest jedynym sposobem (o ile wiem), aby skojarzyć go z odpowiednim programem użytkowym.

Ponieważ nie wiem dlaczego , trochę niepokoi mnie to, że plik o nazwie „fred” i plik o nazwie „fred.txt” otwierają się w edytorze tekstu.

Czy działa tutaj jasna hierarchia?

Peter.O
źródło

Odpowiedzi:

16

Typy MIME to tylko sposób na nazwanie typów. Nie mają one nic wspólnego ze sposobem określania typu pliku.

Istnieją dwa sposoby określenia typu pliku: a) Spójrz na jego rozszerzenie i miej nadzieję, że jest on poprawny lub b) spójrz na jego zawartość, a następnie zgadnij na podstawie tego. Jeśli plik nie ma rozszerzenia b, jedyną opcją jest.

Wiele (binarnych) formatów plików ma określony nagłówek, na którym można sprawdzić ich typ. To sprawia, że ​​opcja b jest dość niezawodna dla tych typów.

Formaty zwykłego pliku tekstowego często można określić na podstawie ich struktury (jeśli plik zawiera wiele tagów HTML, prawdopodobnie jest to plik HTML).

W systemach unix i linux można użyć filenarzędzia wiersza polecenia, aby znaleźć typ pliku na podstawie jego zawartości.

Menedżer plików często używa kombinacji kombinacji opcji a i b (np. Najpierw spójrz na rozszerzenie pliku, jeśli nie jest znane (lub plik nie ma rozszerzenia), spójrz na zawartość).

Typ pliku nie jest przechowywany jako metadane w popularnych systemach plików Linux.

sepp2k
źródło
14

W systemie Linux rozszerzenie pliku jest częścią nazwy pliku i tak naprawdę nie ma znaczenia dla systemu operacyjnego. Typ MIME to opis zawartości pliku. fredi fred.txtoba miałyby typ MIME text/plain.

Menedżerowie plików, tacy jak Nautilus, używają tego typu MIME, aby wiedzieć, z którym programem otworzyć plik. W terminalu xdg-openpolecenie robi to samo. Jest to jednak poziom przestrzeni użytkownika, a nie poziom systemu operacyjnego.

Pliki tak naprawdę nie zawierają tego typu MIME, ale programy, które je otwierają, używają różnych metod, aby ustalić, jaki jest ten typ MIME. Niektóre polegają tylko na rozszerzeniu pliku, ale większość używa mieszanki technik, w tym patrzenia na dane na początku pliku.

Jeśli początek pliku zawiera tylko bajty, które można przedstawić jako znaki ASCII, można bezpiecznie założyć, że jest to plik tekstowy. Jeśli więc rozszerzenie jest podobne do .html, program zakłada, że ​​jest to strona HTML i dlatego otwiera go w przeglądarce internetowej. To samo działa z binarnymi formatami plików. Na przykład wiem, że format pliku bitmapy zaczyna się od „BMP” w ASCII, po którym następują dane binarne reprezentujące obraz.

Mówiąc prościej, programy Linuksa zgadują na podstawie danych w pliku i jego rozszerzenia. Może to nie wydawać się bardzo wiarygodne, ale zastosowane algorytmy są bardziej skomplikowane niż podane przeze mnie przykłady i są naprawdę bardzo dokładne.

dv3500ea
źródło
5

W świecie linuksa Rozszerzenia plików są tylko jednym wskaźnikiem typu pliku. Istnieje narzędzie wiersza polecenia o nazwie „plik”, które odgaduje typ pliku.

Aby uzyskać ten typ, dostępne są głównie 3 wskaźniki:

  • Rozszerzenie
  • Specjalne atrybuty w systemie plików (takie jak sym- lub hardlink, foldery, urządzenie wejściowe itp.)
  • Zawartość
    • Binarny (jak informacja ELF w plikach wykonywalnych)
    • Tekstowy (jak <html>, #!/bin/bash)

Relacja między typem pliku a typem MIME polega na tym, że MIME jest jedynie standardem reprezentującym typ pliku (podobny text/css).

Linux „zgaduje” typ pliku i otwiera powiązany program dla tego typu.

Lincoln
źródło