O que significa “testes mágicos” para o comando de arquivo?

O que significa “testes mágicos” para o comando de arquivo?

Eu estava lendo sobre o filecomando e me deparei com algo que não entendi muito bem:

file é projetado para determinar o tipo de arquivo que está sendo consultado.... file faz isso executandotrêsconjuntos de testes no arquivo em questão:

  • testes de sistema de arquivos,
  • Magiatestes,
  • testes de linguagem

O que sãoMagiatestes?

Responder1

"mágica" aqui se refere a "números mágicos": um valor especial que está em um local conhecido em um arquivo que identifica seu tipo. O filecomando possui um banco de dados desses números e a que tipo eles correspondem. A biblioteca que acompanha esse banco de dados é chamadalibmagic, e você pode acessá-lo em seus próprios programas.

Eles não são necessariamente “números” como podemos pensar neles. Por exemplo, um arquivo de imagem PNG sempre começa com "\x89PNG\r\n\x1a\n", uma classe Java começa com os quatro bytes (em hexadecimal) CA FE BA BE e um arquivo HTML tem "< html" em algum lugar perto do início. É apenas uma pequena sequência de dados que está em um arquivo desse tipo, geralmente muito próximo do início.

Quando as pessoas estão definindo formatos de arquivo, muitas vezes incluem um deles deliberadamente ou apenas como parte do ajuste do formato. filepode usá-los depois. Ele também possui outras maneiras de realmente observar o conteúdo do arquivo para adivinhar o que ele é ("testes de linguagem").

Responder2

Isso se refere aos "bytes mágicos" que muitos formatos de arquivo possuem no início de um arquivo que mostram que tipo de arquivo é.

Por exemplo, se um arquivo começa com #!então ele é considerado um script.

informação relacionada