Una extensión de nombre de archivo , extensión de nombre de archivo o extensión de archivo es un sufijo del nombre de un archivo de computadora (por ejemplo, .nes
, .sfc
, .z64
). La extensión indica una característica del contenido del archivo o su uso previsto. Una extensión de nombre de archivo normalmente se delimita del resto del nombre de archivo con un punto , pero en algunos sistemas [1] se separa con espacios.
Algunos sistemas de archivos implementan extensiones de nombre de archivo como una característica del propio sistema de archivos y pueden limitar la longitud y el formato de la extensión, mientras que otros tratan las extensiones de nombre de archivo como parte del nombre de archivo sin distinción especial.
El sistema de archivos Multics almacena el nombre del archivo como una sola cadena, no dividida en componentes de nombre base y extensión, lo que permite que el "." sea simplemente otro carácter permitido en los nombres de archivo. Permite nombres de archivo de longitud variable, lo que permite más de un punto y, por lo tanto, múltiples sufijos, así como ningún punto y, por lo tanto, ningún sufijo. Algunos componentes de Multics y las aplicaciones que se ejecutan en él utilizan sufijos para indicar tipos de archivo, pero no todos los archivos necesitan tener un sufijo; por ejemplo, los ejecutables y los archivos de texto ordinarios normalmente no tienen sufijos en sus nombres.
Los sistemas de archivos para sistemas operativos tipo UNIX también almacenan el nombre del archivo como una sola cadena, con "." como un carácter más en el nombre del archivo. A veces se dice que un archivo con más de un sufijo tiene más de una extensión, aunque la terminología varía en este sentido, y la mayoría de los autores definen la extensión de una manera que no permite más de una en el mismo nombre de archivo. [ cita requerida ] Más de una extensión generalmente representa transformaciones anidadas, como files.tar.gz
(el .tar
indica que el archivo es un archivo tar de uno o más archivos, y el .gz
indica que el archivo tar está comprimido con gzip ). Los programas que transforman o crean archivos pueden agregar la extensión apropiada a los nombres inferidos de los nombres de los archivos de entrada (a menos que se les dé explícitamente un nombre de archivo de salida), pero los programas que leen archivos generalmente ignoran la información; está principalmente destinada al usuario humano. Es más común, especialmente en archivos binarios, que el archivo contenga metadatos internos o externos que describan su contenido. Este modelo generalmente requiere que se proporcione el nombre de archivo completo en los comandos, mientras que el enfoque de metadatos a menudo permite omitir la extensión.
En DOS y Windows de 16 bits , los nombres de archivo tienen un máximo de 8 caracteres, un punto y una extensión de hasta tres letras. El sistema de archivos FAT para DOS y Windows almacena los nombres de archivo como un nombre de 8 caracteres y una extensión de tres caracteres. El carácter de punto no se almacena.
El sistema de archivos de alto rendimiento (HPFS), utilizado en el sistema operativo OS/2 de Microsoft e IBM , almacena el nombre del archivo como una cadena única, con el carácter "." como un carácter más en el nombre del archivo. La convención de utilizar sufijos se mantuvo, aunque HPFS admite atributos extendidos para archivos, lo que permite almacenar el tipo de archivo en el archivo como un atributo extendido.
El sistema de archivos nativo de Windows NT de Microsoft , NTFS , y el posterior ReFS , también almacenan el nombre del archivo como una sola cadena; nuevamente, se continuó con la convención de usar sufijos para simular extensiones, para lograr compatibilidad con las versiones existentes de Windows. En Windows NT 3.5 , apareció una variante del sistema de archivos FAT, llamada VFAT ; admite nombres de archivo más largos, y el nombre del archivo se trata como una sola cadena.
Windows 95 , con VFAT, introdujo soporte para nombres de archivos largos y eliminó la división de nombre/extensión 8.3 en los nombres de archivos de Windows que no eran NT.
El sistema operativo Mac OS clásico eliminó por completo los metadatos de extensión basados en el nombre de archivo; en su lugar, utilizó un código de tipo de archivo distinto para identificar el formato de archivo. Además, se especificó un código de creador para determinar qué aplicación se iniciaría cuando se hiciera doble clic en el ícono del archivo . [2] Sin embargo, macOS usa sufijos de nombre de archivo como consecuencia de derivarse del sistema operativo NeXTSTEP similar a UNIX , además de usar códigos de tipo y creador.
En los sistemas Commodore, los archivos solo pueden tener cuatro extensiones: PRG, SEQ, USR, REL. Sin embargo, estas se utilizan para separar los tipos de datos que utiliza un programa y son irrelevantes para identificar su contenido.
Con la llegada de las interfaces gráficas de usuario , surgió el problema de la gestión de archivos y el comportamiento de la interfaz. Microsoft Windows permitía asociar varias aplicaciones a una extensión determinada y había distintas acciones disponibles para seleccionar la aplicación requerida, como un menú contextual que ofrecía la opción de ver, editar o imprimir el archivo. Se seguía suponiendo que cualquier extensión representaba un único tipo de archivo; existía una correspondencia inequívoca entre la extensión y el icono.
Cuando llegó la era de Internet , quienes utilizaban sistemas Windows que todavía estaban restringidos a los formatos de nombre de archivo 8.3 tenían que crear páginas web con nombres que terminaban en .HTM
, mientras que quienes utilizaban computadoras Macintosh o UNIX podían usar la .html
extensión de nombre de archivo recomendada. Esto también se convirtió en un problema para los programadores que experimentaban con el lenguaje de programación Java , ya que requiere el sufijo de cuatro letras .java
para los archivos de código fuente y el sufijo de cinco letras .class
para los archivos de salida de código objeto del compilador Java . [3]
Las extensiones de nombre de archivo pueden considerarse un tipo de metadatos . [4] Se utilizan comúnmente para implicar información sobre la forma en que los datos pueden almacenarse en el archivo. La definición exacta, que proporciona los criterios para decidir qué parte del nombre de archivo es su extensión, pertenece a las reglas del sistema de archivos específico [5] utilizado ; por lo general, la extensión es la subcadena que sigue a la última aparición, si la hay, del carácter de punto ( ejemplo: txt
es la extensión del nombre de archivo readme.txt
y html
la extensión de index.html
). En los sistemas de archivos de algunos sistemas mainframe como CMS en VM , VMS y de sistemas de PC como CP/M y sistemas derivados como MS-DOS , la extensión es un espacio de nombres separado del nombre de archivo. Bajo DOS y Windows de Microsoft , extensiones como EXE
o indican que un archivo es un programa ejecutable . En OS/360 y sucesores , la parte del nombre del conjunto de datos que sigue al último punto, llamada calificador de bajo nivel, es tratada como una extensión por algún software, por ejemplo, TSO EDIT, pero no tiene un significado especial para el sistema operativo en sí; lo mismo se aplica a los archivos Unix en MVS.COM
BAT
La extensión de nombre de archivo se utilizó originalmente para determinar el tipo genérico del archivo. [ cita requerida ] La necesidad de condensar el tipo de un archivo en tres caracteres con frecuencia llevó a extensiones abreviadas. Los ejemplos incluyen el uso .GFX
de para archivos gráficos, .TXT
para texto simple y .MUS
para música. Sin embargo, debido a que se han creado muchos programas de software diferentes que manejan estos tipos de datos (y otros) de diversas formas, las extensiones de nombre de archivo comenzaron a asociarse estrechamente con ciertos productos, incluso versiones de productos específicos. Por ejemplo, los primeros archivos WordStar.WS
usaban o , donde n era el número de versión del programa. Además, se desarrollaron usos conflictivos de algunas extensiones de nombre de archivo. Un ejemplo es , utilizado tanto para paquetes de RPM Package Manager como para archivos RealPlayer Media;. [6] Otros son , compartido por fuentes DESQview , libros financieros de Quicken e imágenes QuickTime ; [7] , compartido por scripts de GrabIt e imágenes ROM de Game Boy Advance ; [8] , utilizado para SmallBasic y Scratch ; y , utilizado para Dynamix Three Space y DTS ..WSn
.rpm
.qif
.gba
.sb
.dts
En muchos protocolos de Internet , como HTTP y MIME email , el tipo de un flujo de bits se indica como el tipo de medio o tipo MIME del flujo, en lugar de una extensión de nombre de archivo. Esto se indica en una línea de texto que precede al flujo, como Content-type: text/plain .
No existe una correspondencia estándar entre las extensiones de los nombres de archivo y los tipos de medios, lo que puede dar lugar a discrepancias en la interpretación entre autores, servidores web y software cliente al transferir archivos a través de Internet. Por ejemplo, un autor de contenido puede especificar la extensión svgz para un archivo comprimido de gráficos vectoriales escalables , pero un servidor web que no reconozca esta extensión puede no enviar el tipo de contenido adecuado application/svg+xml y su encabezado de compresión requerido, lo que hace que los navegadores web no puedan interpretar y mostrar correctamente la imagen.
BeOS , cuyo sistema de archivos BFS admite atributos extendidos, etiquetaría un archivo con su tipo de medio como un atributo extendido. Algunos entornos de escritorio , como KDE y GNOME , asocian un tipo de medio con un archivo examinando tanto el sufijo del nombre de archivo como el contenido del archivo, al estilo del comando file , como una heurística . Eligen la aplicación que se iniciará cuando se abra un archivo en función de ese tipo de medio, lo que reduce la dependencia de las extensiones de nombre de archivo. macOS usa tanto extensiones de nombre de archivo como tipos de medios, así como códigos de tipo de archivo , para seleccionar un Identificador de tipo uniforme con el que identificar el tipo de archivo internamente.
El uso de una extensión de nombre de archivo en un nombre de comando aparece ocasionalmente, generalmente como un efecto secundario de que el comando se haya implementado como un script, por ejemplo, para Bourne shell o para Python , y el nombre del intérprete se agrega como sufijo al nombre del comando, una práctica común en sistemas que dependen de asociaciones entre la extensión del nombre de archivo y el intérprete, pero que está totalmente en desuso [9] en sistemas tipo Unix , como Linux , Oracle Solaris , sistemas basados en BSD y macOS de Apple , donde el intérprete normalmente se especifica como un encabezado en el script (" shebang ").
En los sistemas basados en asociaciones, la extensión del nombre de archivo generalmente se asigna a una única selección de intérprete para esa extensión en todo el sistema (como ".py", que significa utilizar Python), y el comando en sí se puede ejecutar desde la línea de comandos incluso si se omite la extensión (suponiendo que se realiza la configuración adecuada). Si se cambia el lenguaje de implementación, también se cambia la extensión del nombre del comando y el sistema operativo proporciona una API consistente al permitir que se use la misma versión sin extensión del comando en ambos casos. Este método sufre un poco por la naturaleza esencialmente global del mapeo de asociaciones, así como por la evitación incompleta de las extensiones por parte de los desarrolladores al llamar a los programas, y los desarrolladores no pueden forzar esa evitación. Windows es el único empleador generalizado restante de este mecanismo.
En sistemas con directivas de intérprete , incluidas prácticamente todas las versiones de Unix, las extensiones de nombre de comando no tienen un significado especial y, por práctica estándar, no se utilizan, ya que el método principal para configurar intérpretes para scripts es iniciarlos con una sola línea que especifique el intérprete a utilizar. En estos entornos, incluir la extensión en un nombre de comando expone innecesariamente un detalle de implementación que pone en riesgo futuro todas las referencias a los comandos de otros programas si la implementación cambia. Por ejemplo, sería perfectamente normal que un script de shell se reimplementara en Python o Ruby, y más tarde en C o C++, todo lo cual cambiaría el nombre del comando si se usaran extensiones. Sin extensiones, un programa siempre tiene el mismo nombre sin extensión, con solo la directiva de intérprete y/o el número mágico cambiando, y las referencias al programa desde otros programas siguen siendo válidas.
El comportamiento predeterminado del Explorador de archivos , el explorador de archivos que viene con Microsoft Windows , es que no se muestren las extensiones de los nombres de archivo. Los usuarios malintencionados han intentado propagar virus y gusanos informáticos utilizando nombres de archivo formados como LOVE-LETTER-FOR-YOU.TXT.vbs
. La esperanza es que esto aparezca como LOVE-LETTER-FOR-YOU.TXT
, un archivo de texto inofensivo, sin alertar al usuario sobre el hecho de que es un programa informático dañino, en este caso, escrito en VBScript . El comportamiento predeterminado de ReactOS es mostrar las extensiones de los nombres de archivo en el Explorador de ReactOS .
Las versiones posteriores de Windows (a partir de Windows XP Service Pack 2 y Windows Server 2003 ) incluyeron listas personalizables de extensiones de nombres de archivos que debían considerarse "peligrosas" en ciertas "zonas" de funcionamiento, como cuando se descargaban de la web o se recibían como archivo adjunto en un correo electrónico. Los sistemas de software antivirus modernos también ayudan a defender a los usuarios contra este tipo de intentos de ataques siempre que sea posible.
Algunos virus aprovechan la similitud entre el dominio de nivel superior " .com " y la extensión de nombre de archivo ".COM" enviando por correo electrónico archivos adjuntos de comandos ejecutables maliciosos bajo nombres superficialmente similares a URL ( por ejemplo , "myparty.yahoo.com"), con el efecto de que los usuarios inconscientes hacen clic en enlaces integrados en el correo electrónico que creen que conducen a sitios web, pero en realidad descargan y ejecutan los archivos adjuntos maliciosos.
Se han detectado casos de malware diseñado para explotar vulnerabilidades en algunas aplicaciones de Windows que podrían causar un desbordamiento de búfer basado en pila al abrir un archivo con una extensión de nombre de archivo demasiado larga y no controlada.
La extensión del nombre de archivo es solo un marcador y el contenido del archivo no tiene por qué coincidir con ella. [10] Esto se puede utilizar para ocultar contenido malicioso. Por lo tanto, cuando se intenta identificar un archivo por razones de seguridad, se considera peligroso confiar solo en la extensión y se prefiere un análisis adecuado del contenido del archivo. Por ejemplo, en sistemas tipo UNIX , no es raro encontrar archivos sin extensión alguna, ya que file
se supone que se deben utilizar comandos como , que leerán el encabezado del archivo para determinar su contenido.
Una cosa que debe saber sobre la creación de archivos con z/VM es que cada archivo necesita su propio identificador de tres partes. La primera parte del identificador es el nombre del archivo. La segunda parte es el tipo de archivo. Y la tercera parte es el modo de archivo. Estos tres identificadores de archivo suelen abreviarse fn ft fm.
nombres de los archivos de código fuente deben tener sufijos .java, los nombres de los archivos de clase deben tener sufijos .class y tanto los archivos de código fuente como los de clase deben tener nombres raíz que identifiquen la clase.