"sihir" di sini mengacu pada " angka ajaib ": nilai khusus yang ada di tempat yang dikenal dalam file yang mengidentifikasi jenisnya. The file
perintah memiliki database nomor ini dan apa jenis mereka sesuai dengan. Perpustakaan yang menyertai database itu disebut libmagic , dan Anda dapat mengaksesnya dari program Anda sendiri.
Mereka tidak harus "angka" seperti yang kita pikirkan. Misalnya, file gambar PNG selalu dimulai dengan "\ x89PNG \ r \ n \ x1a \ n", kelas Java dimulai dengan empat byte (dalam heksadesimal) CA FE BA BE, dan file HTML memiliki "<html" di suatu tempat dekat awal. Itu hanya beberapa urutan kecil data yang diketahui berada dalam file jenis itu, biasanya sangat dekat dengan awal.
Ketika orang mendefinisikan format file mereka sering memasukkan salah satu di dalamnya baik secara sengaja atau hanya sebagai bagian dari membuat format yang cocok. file
dapat menggunakannya sesudahnya. Ini juga memiliki cara lain untuk benar-benar melihat isi file untuk menebak apa itu ("tes bahasa").
#!
sebenarnya adalah contoh dari ini, karena kernel itu sendiri, pada saat melihat byte itu, seharusnya memanggil perintah yang mengikuti.