Originalmente, em sistemas unix, as extensões em 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:
- Apenas 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 é indicação de tipo de arquivo suficiente.
- As executáveis destinadas a serem chamadas diretamente não possuem uma extensão. O simples fato de ser executável é informação suficiente para o usuário, e o kernel não se preocupa com nomes de arquivos.
- Os arquivos que começam com uma palavra em maiúsculas geralmente são arquivos de texto, por exemplo,
README
,TODO
. Às vezes, há uma parte adicional que indica uma subcategoria, por ex.INSTALL.linux
,INSTALL.solaris
. - Os arquivos cujo nome começa com um ponto são arquivos de configuração ou de estado de um aplicativo específico e geralmente não têm uma extensão, por exemplo,
.bashrc
,.profile
,.emacs
. - Existem alguns casos tradicionais, por ex.
Makefile
.
(São casos comuns, não regras rígidas).
A maioria dos formatos de arquivo binário também contém algum tipo de cabeçalho que descreve as propriedades do arquivo e normalmente permite que o formato do arquivo seja identificado por meio de números mágicos . O comando file
analisa essas informações e mostra seus palpites.
Às vezes, a extensão do arquivo fornece mais informações do que o formato do arquivo. Às vezes, ocorre 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 arquivos de código-fonte, onde a extensão indica a linguagem de programação, 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
é usado para arquivos de código compilados ( arquivos de objetos ), mas a inspeção O conteúdo do arquivo geralmente revela facilmente para qual tipo de máquina e sistema operacional o arquivo objeto é.
Uma vantagem da extensão é que é muito mais rápido reconhecê-la do que abrir o arquivo e procurar sequências mágicas. Por exemplo, a conclusão de nomes de arquivos em shells é quase sempre baseada no nome (principalmente a extensão), porque a leitura de todos os arquivos em um diretório grande pode levar muito tempo, enquanto a leitura dos nomes dos arquivos é rápida o suficiente para uma / kbd> pressione.
À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 web pode tratar .shtml
e .html
de forma diferente, o primeiro passando por algum pré-processamento do lado do servidor , o sendo este último servido como está.
No caso de arquivos gzip, gzip
não recompactará arquivos cujo nome termine em .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 serão modificados.