Qual é a relação entre os tipos MIME e as extensões de arquivo?

19

Eu posso ter a ideia errada aqui, mas pensei que:

Tipos MIME são códigos de identificação, embutidos dentro de um arquivo.
As extensões de arquivo são códigos de identificação, com o sufixo do nome do arquivo .

Eu pensei, por algo que ouvi na obscura idade das trevas, que o Linux era independente de extensão ... (talvez fosse nos primeiros dias, e as coisas mudaram desde então ...?)

Recentemente, eu vim do mundo Windows, onde, no nível do sistema operacional , um arquivo .extension é a única maneira (até onde eu sei) de associá-lo ao seu programa de aplicativos relevante.

Como não sei por que , acho um pouco desconcertante que um arquivo chamado "fred" e um arquivo chamado "fred.txt" sejam abertos em um editor de texto.

Existe uma hierarquia clara em ação aqui?

Peter.O
fonte

Respostas:

16

Os tipos MIME são apenas uma maneira de nomear tipos. Eles não têm nada a ver com a forma como o tipo de arquivo é determinado.

Existem duas maneiras de determinar o tipo de um arquivo: a) Veja sua extensão e espere que seja preciso ou b) veja seu conteúdo e, em seguida, adivinhe com base nisso. Se um arquivo não tiver extensão b é a única opção.

Muitos formatos de arquivo (binários) têm um cabeçalho específico que você pode observar para determinar seu tipo. Isso torna a opção b bastante confiável para esses tipos.

Os formatos de arquivo de texto sem formatação costumam ser determinados por sua estrutura (se um arquivo contém muitas tags html, provavelmente é um arquivo html).

Nos sistemas unix e linux, você pode usar o fileutilitário de linha de comandos para descobrir o tipo de arquivo com base em seu conteúdo.

O gerenciador de arquivos geralmente usa alguma combinação das opções aeb (por exemplo, observe primeiro a extensão do arquivo, se ela não for conhecida (ou o arquivo não tiver extensão), verifique o conteúdo).

O tipo de arquivo não é armazenado como metadado em sistemas de arquivos linux comuns.

sepp2k
fonte
14

No Linux, a extensão do arquivo faz parte do nome do arquivo e não significa nada para o sistema operacional. Um tipo MIME é uma descrição do conteúdo do arquivo. frede fred.txtambos teriam um tipo MIME de text/plain.

Gerenciadores de arquivos, como o Nautilus, usam esse tipo de MIME para saber com qual programa abrir o arquivo. Em um terminal, o xdg-opencomando faz a mesma coisa. No entanto, este é o nível do espaço do usuário e não do sistema operacional.

Na verdade, os arquivos não contêm esse tipo de mímica, mas os programas que os abrem usam vários métodos para descobrir qual é esse tipo de MIME. Alguns dependem apenas da extensão do arquivo, mas a maioria usa uma mistura de técnicas, incluindo a visualização dos dados no início do arquivo.

Se o início do arquivo contiver apenas bytes que podem ser representados como caracteres ASCII, é seguro assumir que é um arquivo de texto. Se a extensão for algo como .html, o programa assume que é uma página HTML e a abre com um navegador da web. O mesmo funciona com formatos de arquivo binários. Por exemplo, eu sei que o formato do arquivo de bitmap começa com 'BMP' em ASCII, seguido por dados binários que representam a imagem.

Simplificando, os programas Linux fazem um palpite com base nos dados de um arquivo e em sua extensão. Isso pode não parecer muito confiável, mas os algoritmos usados ​​são mais complicados do que os exemplos que dei e são realmente precisos.

dv3500ea
fonte
5

No mundo do linux As extensões de arquivo são apenas um indicador para o tipo de arquivo. Existe uma ferramenta de linha de comando chamada "arquivo" que adivinha o tipo de arquivo.

Para obter esse tipo, existem principalmente 3 indicadores:

  • A extensão
  • Atributos especiais no sistema de arquivos (como links simbólicos ou físicos, pastas, dispositivo de entrada etc.)
  • O conteúdo
    • Binário (como informações de ELF em executáveis)
    • Prova (como <html>, #!/bin/bash)

A relação entre o tipo de arquivo e o tipo MIME é que MIME é apenas um padrão para representar o tipo de arquivo (como text/css).

O Linux "adivinha" o tipo de arquivo e abre um programa associado a esse tipo.

Lincoln
fonte