"ma thuật" ở đây đề cập đến " số ma thuật ": một giá trị đặc biệt ở một nơi đã biết trong một tệp xác định loại của nó. Các file
lệnh có một cơ sở dữ liệu của những con số và những gì gõ chúng tương ứng với. Thư viện đi cùng với cơ sở dữ liệu đó được gọi là libmagic và bạn có thể truy cập nó từ các chương trình của riêng bạn.
Chúng không nhất thiết phải là "số" như chúng ta có thể nghĩ về chúng. Ví dụ: tệp hình ảnh PNG luôn bắt đầu bằng "\ x89PNG \ r \ n \ x1a \ n", một lớp Java bắt đầu bằng bốn byte (theo hệ thập lục phân) CA FE BA BE và một tệp HTML có "<html" ở đâu đó gần bắt đầu Đó chỉ là một chuỗi dữ liệu nhỏ được biết là nằm trong một tệp thuộc loại đó, thường rất gần với điểm bắt đầu.
Khi mọi người đang xác định định dạng tệp, họ thường bao gồm một trong những định dạng này trong đó một cách có chủ ý hoặc chỉ là một phần của việc làm cho định dạng khớp với nhau. file
có thể sử dụng chúng sau đó Nó cũng có những cách khác để thực sự nhìn vào nội dung của tệp để đoán nó là gì ("kiểm tra ngôn ngữ").
#!
thực sự là một ví dụ về điều này, bởi vì chính kernel, khi nhìn thấy các byte đó, được cho là sẽ gọi lệnh theo sau.