Originalmente, em sistemas unix, as extensões nos nomes de arquivos eram uma questão de convenção. Eles permitiram que um ser humano escolhesse o programa certo para abrir um arquivo. A convenção moderna é usar extensões na maioria dos casos; exceções comuns são:
- Somente arquivos regulares têm uma extensão, não diretórios ou nomes de dispositivos. O simples fato de ser um diretório ou dispositivo é suficiente para indicar o tipo de arquivo.
- Os executáveis que devem ser chamados diretamente não têm uma extensão. O simples fato de ser executável é uma informação suficiente para o usuário, e o kernel não se importa com nomes de arquivos.
- Arquivos começando com uma palavra em todas as tampas são frequentemente arquivos de texto, por exemplo
README
, TODO
. Às vezes, há uma parte adicional que indicam uma subcategoria, por exemplo INSTALL.linux
, INSTALL.solaris
.
- Arquivos cujo nome começa com um ponto estão de configuração ou estaduais arquivos de um aplicativo específico, e muitas vezes não têm uma extensão, por exemplo
.bashrc
, .profile
, .emacs
.
- Existem alguns casos tradicionais, por exemplo
Makefile
.
(Esses são casos comuns, não regras rígidas.)
A maioria dos formatos de arquivos binários também contém algum tipo de cabeçalho que descreve as propriedades do arquivo e geralmente permite que o formato do arquivo seja identificado por meio de números mágicos . O file
comando examina essas informações e mostra suas suposições.
Às vezes, a extensão do arquivo fornece mais informações que o formato do arquivo, às vezes é o contrário. Por exemplo, muitos formatos de arquivo consistem em um arquivo zip : bibliotecas Java ( .jar
), documentos do OpenOffice ( .odt
,…), documento do Microsoft Office ( .docx
,…) etc. Outro exemplo são os arquivos de código-fonte, nos quais a extensão indica a linguagem de programação, que pode será difícil para um computador adivinhar automaticamente a partir do conteúdo do arquivo. Por outro lado, algumas extensões são extremamente ambíguas, por exemplo, .o
são usadas para arquivos de código compilados (arquivos de objeto ), mas a inspeção do conteúdo do arquivo geralmente revela facilmente que tipo de máquina e sistema operacional o arquivo de objeto é.
Uma vantagem da extensão é que é muito mais rápido reconhecê-lo do que abrir o arquivo e procurar sequências mágicas. Por exemplo, a conclusão de nomes de arquivo em shells quase sempre se baseia no nome (principalmente na extensão), porque a leitura de todos os arquivos em um diretório grande pode demorar muito tempo, enquanto apenas a leitura dos nomes dos arquivos é rápida o suficiente para uma Tabimpressora.
Às vezes, alterar a extensão de um arquivo pode permitir que você diga como um arquivo deve ser interpretado, quando dois formatos de arquivo são quase, mas não totalmente idênticos. Por exemplo, um servidor da Web pode tratar .shtml
e .html
diferentemente, o primeiro passando por algum pré-processamento no servidor , o último sendo servido como está.
No caso de arquivos gzip, gzip
não vai arquivos Recompress cujas extremidades nome .gz
, .tgz
e algumas outras extensões. Dessa forma, você pode executar gzip *
para compactar todos os arquivos em um diretório e os arquivos já compactados não são modificados.