No Unix, um arquivo é apenas uma seqüência de bytes, no entanto, alguns arquivos têm mais estrutura. O comando file
pode olhar a seqüência de bytes e dizer coisas. Por exemplo, se os primeiros 4 bytes forem \ 177 E L F, ele dirá que é um arquivo elf. Em seguida, ele examinará mais bytes e informará se é um arquivo principal, um executável ou um arquivo de objeto. Se os bytes 6 a 9 forem JFIF, então é um arquivo de imagem e, novamente, o programa pode ler mais e informá-lo sobre isso.
Grande parte disso é impulsionada por tabelas de dados, em vez de serem compiladas no programa. Essas tabelas de dados são o que está nos arquivos magic
.
Portanto, o motivo pelo qual você tem arquivos mágicos é permitir que você diga file *
e faça com que o programa informe o que você tem no diretório atual.