¿Cuál es la relación entre los tipos MIME y las extensiones de archivo?


19

Puede que tenga una idea equivocada aquí, pero pensé que:

Los tipos MIME son códigos de identificación, incrustados dentro de un archivo.
Las extensiones de archivo son códigos de identificación, sufijados con el nombre del archivo .

Pensé, por algo que escuché en las oscuras eras oscuras, que Linux era independiente de la extensión ... (¿tal vez fue en los primeros días, y las cosas han cambiado desde entonces ...?)

Recientemente he venido del mundo de Windows, donde, en el nivel del sistema operativo , una extensión de archivo es la única forma (hasta donde yo sé) de asociarlo con su programa de aplicación relevante.

Como no sé por qué , me resulta un poco desconcertante que un archivo llamado "fred" y un archivo llamado "fred.txt" se abran en un editor de texto.

¿Hay una jerarquía clara en el trabajo aquí?

Respuestas:


16

Los tipos MIME son solo una forma de nombrar tipos. No tienen nada que ver con cómo se determina el tipo de archivo.

Hay dos formas de determinar el tipo de archivo: a) Mire su extensión y espere que sea precisa ob) mire su contenido y luego adivine en base a eso. Si un archivo no tiene extensión, b es la única opción.

Muchos formatos de archivo (binarios) tienen un encabezado específico que puede ver para determinar su tipo. Esto hace que la opción b sea bastante confiable para esos tipos.

Los formatos de archivo de texto sin formato a menudo se pueden determinar por su estructura (si un archivo contiene muchas etiquetas html, probablemente sea un archivo html).

En los sistemas Unix y Linux, puede utilizar la fileutilidad de línea de comandos para averiguar el tipo de archivo en función de su contenido.

El administrador de archivos a menudo usa alguna combinación de las opciones a y b (por ejemplo, mire primero la extensión del archivo, si no se conoce (o el archivo no tiene una extensión), mire el contenido).

El tipo de un archivo no se almacena como metadatos en los sistemas de archivos de Linux comunes.


14

En Linux, la extensión del archivo es parte del nombre del archivo y en realidad no significa nada para el sistema operativo. Un tipo MIME es una descripción del contenido del archivo. fredy fred.txtambos tendrían un tipo MIME de text/plain.

Los administradores de archivos, como Nautilus, usan este tipo MIME para saber con qué programa abrir el archivo. En una terminal, el xdg-opencomando hace lo mismo. Sin embargo, este es el nivel de espacio del usuario, no el nivel del sistema operativo.

Los archivos en realidad no contienen este tipo MIME, pero los programas que los abren utilizan varios métodos para determinar qué es este tipo MIME. Algunos se basan únicamente en la extensión del archivo, pero la mayoría utiliza una combinación de técnicas que incluyen mirar los datos al comienzo del archivo.

Si el comienzo del archivo solo contiene bytes que se pueden representar como caracteres ASCII, es seguro asumir que es un archivo de texto. Si la extensión es algo así como .html, el programa asume que es una página HTML y, por lo tanto, la abre con un navegador web. Lo mismo funciona con los formatos de archivos binarios. Por ejemplo, sé que el formato de archivo de mapa de bits comienza con 'BMP' en ASCII seguido de datos binarios que representan la imagen.

En pocas palabras, los programas de Linux hacen una suposición educada basada en los datos de un archivo y su extensión de archivo. Esto puede no parecer muy confiable, pero los algoritmos utilizados son más complicados que los ejemplos que he dado y en realidad son realmente precisos.


5

En el mundo de Linux, las extensiones de archivo son solo un indicador para el tipo de archivo. Hay una herramienta de línea de comando llamada "archivo" que adivina el tipo de archivo.

Para obtener este tipo hay principalmente 3 indicadores:

  • La extensión
  • Atributos especiales en el sistema de archivos (como enlaces simbólicos o duros, carpetas, dispositivos de entrada, etc.)
  • El contenido
    • Binario (como información ELF en ejecutables)
    • Textual (como <html>, #!/bin/bash)

La relación entre el tipo de archivo y el tipo MIME es que MIME es solo un estándar para representar el tipo de archivo (como text/css).

Linux "adivina" el tipo de archivo y abre un programa asociado para ese tipo.

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.