Qual è la relazione tra i tipi MIME e le estensioni dei file?


19

Potrei avere un'idea sbagliata qui, ma ho pensato che:

I tipi MIME sono codici identificativi, integrati in un file.
Le estensioni di file sono codici identificativi, suffissi al nome del file .

Ho pensato, da qualcosa che ho sentito nelle tenebre oscure, che Linux era .estensione agnostica ... (forse era nei primi giorni, e le cose sono cambiate da allora ...?)

Di recente vengo dal mondo Windows, dove, a livello di sistema operativo , un file .extension è l'unico modo (per quanto ne so) di associarlo al relativo programma applicativo.

Perché non so perché , trovo sconcertante il fatto che un file chiamato "fred" e un file chiamato "fred.txt" si aprano entrambi in un editor di testo.

C'è una gerarchia ben definita al lavoro qui?

Risposte:


16

I tipi MIME sono solo un modo per nominare i tipi. Non hanno nulla a che fare con il modo in cui viene determinato il tipo di file.

Esistono due modi per determinare il tipo di un file: a) Guarda la sua estensione e spera che sia accurata oppure b) guarda il suo contenuto e poi indovina in base a quello. Se un file non ha estensione b è l'unica opzione.

Molti formati di file (binari) hanno un'intestazione specifica che puoi esaminare per determinarne il tipo. Questo rende l'opzione b abbastanza affidabile per quei tipi.

I formati di file di testo normale possono spesso essere determinati dalla loro struttura (se un file contiene molti tag html, probabilmente è un file html).

Sui sistemi unix e linux è possibile utilizzare l' fileutilità della riga di comando per scoprire il tipo di un file in base al suo contenuto.

Il file manager usa spesso una combinazione delle opzioni aeb (ad esempio, guarda prima l'estensione del file, se non è nota (o il file non ha un'estensione), guarda il contenuto).

Il tipo di un file non viene archiviato come metadati su file system Linux comuni.


14

In Linux, l'estensione del file fa parte del nome del file e in realtà non significa nulla per il sistema operativo. Un tipo MIME è una descrizione del contenuto del file. frede fred.txtavrebbe entrambi un tipo MIME di text/plain.

I file manager, come Nautilus, usano questo tipo MIME per sapere con quale programma aprire il file. In un terminale, il xdg-opencomando fa la stessa cosa. Tuttavia, questo è il livello di spazio utente non a livello di sistema operativo.

I file in realtà non contengono questo tipo mime, ma i programmi che li aprono utilizzano vari metodi per capire quale sia questo tipo MIME. Alcuni si basano solo sull'estensione del file, ma la maggior parte utilizza una combinazione di tecniche tra cui la visualizzazione dei dati all'inizio del file.

Se l'inizio del file contiene solo byte che possono essere rappresentati come caratteri ASCII, è lecito ritenere che si tratti di un file di testo. Se quindi l'estensione è qualcosa come .html, il programma presuppone che sia una pagina HTML e quindi la apre con un browser web. La stessa cosa funziona con i formati di file binari. Ad esempio, so che il formato del file bitmap inizia con "BMP" in ASCII seguito da dati binari che rappresentano l'immagine.

In parole povere, i programmi Linux fanno un'ipotesi basata sui dati di un file e sulla sua estensione. Questo potrebbe non sembrare molto affidabile, ma gli algoritmi utilizzati sono più complicati degli esempi che ho fornito e in realtà sono molto precisi.


5

Nel mondo di Linux le estensioni dei file sono solo un indicatore del tipo di file. Esiste uno strumento da riga di comando chiamato "file" che indovina il tipo di un file.

Per ottenere questo tipo ci sono principalmente 3 indicatori:

  • L'estensione
  • Attributi speciali nel filesystem (come per sym- o hardlink, cartelle, dispositivo di input, ecc.)
  • Il contenuto
    • Binario (come le informazioni ELF negli eseguibili)
    • Testuale (come <html>, #!/bin/bash)

La relazione tra il tipo di file e il tipo MIME è che MIME è solo uno standard per rappresentare il tipo di file (come text/css).

Linux "indovina" il tipo di file e apre un programma associato per quel tipo.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.