Originalmente, en sistemas unix, las extensiones en los nombres de archivos eran una cuestión de convención. Permitieron a un ser humano elegir el programa adecuado para abrir un archivo. La convención moderna es usar extensiones en la mayoría de los casos; Las excepciones comunes son:
- Solo los archivos normales tienen una extensión, no directorios o nombres de dispositivos. El mero hecho de ser un directorio o dispositivo es suficiente indicación de tipo de archivo.
- Los ejecutables que deben invocarse directamente no tienen una extensión. El mero hecho de ser ejecutable es suficiente información para el usuario, y al núcleo no le importan los nombres de archivo.
- Los archivos que comienzan con una palabra en todas las tapas son a menudo archivos de texto, por ejemplo
README
, TODO
. A veces hay una parte adicional que indican una subcategoría, por ejemplo INSTALL.linux
, INSTALL.solaris
.
- Archivos cuyo nombre comienza con un punto de configuración son estatales o archivos de una aplicación particular, y con frecuencia no tienen una extensión, por ejemplo
.bashrc
, .profile
, .emacs
.
- Hay algunos casos tradicionales, por ejemplo
Makefile
.
(Estos son casos comunes, no reglas estrictas).
La mayoría de los formatos de archivos binarios también contienen algún tipo de encabezado que describe las propiedades del archivo y, por lo general, permite identificar el formato del archivo a través de números mágicos . El file
comando mira esta información y le muestra sus conjeturas.
A veces, la extensión del archivo proporciona más información que el formato del archivo, a veces es al revés. Por ejemplo, muchos formatos de archivo consisten en un archivo zip : bibliotecas Java ( .jar
), documentos de OpenOffice ( .odt
, ...), documento de Microsoft Office ( .docx
, ...), etc. Otro ejemplo son los archivos de código fuente, donde la extensión indica el lenguaje de programación, que puede será difícil para una computadora adivinar automáticamente a partir del contenido del archivo. Por el contrario, algunas extensiones son muy ambiguas, por ejemplo, .o
se utilizan para archivos de código compilados (archivos de objeto ), pero la inspección del contenido del archivo generalmente revela fácilmente para qué tipo de máquina y sistema operativo es el archivo de objeto.
Una ventaja de la extensión es que es mucho más rápido reconocerlo que abrir el archivo y buscar secuencias mágicas. Por ejemplo, la finalización de los nombres de archivo en shells casi siempre se basa en el nombre (principalmente la extensión), porque leer cada archivo en un directorio grande puede llevar mucho tiempo, mientras que solo leer los nombres de archivos es lo suficientemente rápido como para Tabpresionarlo.
A veces, cambiar la extensión de un archivo puede permitirle decir cómo se debe interpretar un archivo, cuando dos formatos de archivo son casi, pero no completamente idénticos. Por ejemplo, un servidor web puede tratar .shtml
y de manera .html
diferente, el primero se somete a un preprocesamiento del lado del servidor , el último se sirve tal cual.
En el caso de los archivos gzip, gzip
no lo hará volver a comprimir archivos cuyo nombre en extremos .gz
, .tgz
y algunas otras extensiones. De esa manera puede ejecutar gzip *
para comprimir cada archivo en un directorio, y los archivos ya comprimidos no se modifican.