Apa hubungan antara tipe MIME dan ekstensi File?

19

Saya mungkin memiliki ide yang salah di sini, tetapi saya berpikir bahwa:

Jenis MIME mengidentifikasi kode, tertanam di dalam file.
File .extensions yang idenifying kode, akhiran ke file nama .

Saya berpikir, dari sesuatu yang saya dengar di zaman kegelapan yang remang-remang, bahwa Linux adalah. Agnostik ekstensi ... (mungkin pada masa-masa awal, dan banyak hal telah berubah sejak saat itu ...?)

Saya baru-baru ini datang dari dunia Windows, di mana, pada tingkat Sistem Operasi , file .extension adalah satu-satunya cara (sejauh yang saya tahu) untuk menghubungkannya dengan program Aplikasi yang relevan.

Karena saya tidak tahu mengapa , saya merasa sedikit bingung bahwa file bernama "fred" dan file bernama "fred.txt" keduanya terbuka di Editor Teks.

Apakah ada hierarki yang jelas bekerja di sini?

Peter.O
sumber

Jawaban:

16

Jenis MIME hanyalah cara untuk memberi nama jenis. Mereka tidak ada hubungannya dengan bagaimana jenis file ditentukan.

Ada dua cara untuk menentukan jenis file: a) Lihat ekstensinya dan berharap itu akurat atau b) lihat isinya dan tebak berdasarkan itu. Jika file tidak memiliki ekstensi b adalah satu-satunya pilihan.

Banyak format file (biner) memiliki header spesifik yang dapat Anda lihat untuk menentukan jenisnya. Ini membuat opsi b cukup dapat diandalkan untuk tipe-tipe itu.

Format file teks biasa sering dapat ditentukan oleh strukturnya (jika file berisi banyak tag html, itu mungkin file html).

Pada sistem unix dan linux Anda dapat menggunakan fileutilitas baris perintah untuk mengetahui jenis file berdasarkan isinya.

Manajer file sering menggunakan beberapa kombinasi opsi a dan b (mis. Lihat ekstensi file terlebih dahulu, jika tidak diketahui (atau file tidak memiliki ekstensi), lihat kontennya).

Jenis file tidak disimpan sebagai metadata pada sistem file linux yang umum.

sepp2k
sumber
14

Di Linux, ekstensi file adalah bagian dari nama file dan sebenarnya tidak berarti apa-apa untuk sistem operasi. Tipe MIME adalah deskripsi konten file. freddan fred.txtkeduanya akan memiliki tipe MIME text/plain.

Manajer file, seperti Nautilus menggunakan tipe MIME ini untuk mengetahui program yang akan dibuka file tersebut. Di terminal, xdg-openperintah melakukan hal yang sama. Namun, ini adalah level ruang pengguna bukan level sistem operasi.

File sebenarnya tidak mengandung tipe mime ini, tetapi program yang membukanya menggunakan berbagai metode untuk mengetahui apa tipe MIME ini. Beberapa hanya mengandalkan ekstensi file, tetapi sebagian besar menggunakan campuran teknik termasuk melihat data di awal file.

Jika awal file hanya berisi byte yang dapat direpresentasikan sebagai karakter ASCII, aman untuk menganggapnya sebagai file teks. Jika kemudian ekstensi adalah sesuatu seperti .html, program menganggap itu adalah halaman HTML dan membukanya dengan browser web. Hal yang sama berfungsi dengan format file biner. Sebagai contoh, saya tahu bahwa format file bitmap dimulai dengan 'BMP' di ASCII diikuti oleh data biner yang mewakili gambar.

Sederhananya, program Linux membuat tebakan yang dididik berdasarkan data dalam file dan ekstensi file-nya. Ini mungkin terdengar sangat tidak dapat diandalkan tetapi algoritma yang digunakan lebih rumit daripada contoh yang saya berikan dan sebenarnya sangat akurat.

dv3500ea
sumber
5

Dalam dunia linux, ekstensi file hanya satu indikator untuk tipe file. Ada alat baris perintah yang disebut "file" yang menebak jenis file.

Untuk mendapatkan jenis ini ada terutama 3 indikator:

  • Ekstensi
  • Atribut khusus dalam sistem file (seperti untuk sym- atau hardlink, folder, perangkat input, dll.)
  • Konten
    • Biner (seperti informasi ELF dalam executable)
    • Tekstual (seperti <html>, #!/bin/bash)

Relasi antara tipe file dan tipe MIME adalah, bahwa MIME hanya standar untuk mewakili tipe file (seperti text/css).

Linux "menebak" tipe file dan membuka program terkait untuk tipe itu.

Lincoln
sumber