file
sử dụng một số loại thử nghiệm :
1: Nếu tệp không tồn tại, không thể đọc được hoặc không thể xác định trạng thái tệp của nó, đầu ra sẽ chỉ ra rằng tệp đã được xử lý, nhưng loại đó không thể được xác định.
Đây sẽ là đầu ra như thế nào cannot open file: No such file or directory
.
2: Nếu tệp không phải là tệp thông thường, loại tệp sẽ được xác định. Thư mục loại tệp, FIFO, ổ cắm, khối đặc biệt và ký tự đặc biệt phải được xác định như vậy. Các loại tệp xác định thực hiện khác cũng có thể được xác định. Nếu tệp là một liên kết tượng trưng, theo mặc định, liên kết sẽ được giải quyết và tệp sẽ kiểm tra loại tệp được tham chiếu bởi liên kết tượng trưng. (Xem -h
và -i
các tùy chọn bên dưới.)
Đây sẽ là đầu ra như .: directory
và /dev/sda: block special
. Phần lớn định dạng cho điểm này và điểm trước được xác định một phần bởi POSIX - bạn có thể dựa vào một số chuỗi nhất định có trong đầu ra.
3: Nếu độ dài của tệp bằng 0, nó sẽ được xác định là một tệp trống.
Đây là foo: empty
.
4: Tiện ích tệp sẽ kiểm tra một phân đoạn ban đầu của tệp và sẽ đoán được việc xác định nội dung của nó dựa trên các thử nghiệm nhạy cảm với vị trí. (Câu trả lời không được đảm bảo là chính xác; xem các tùy chọn -d, -M và -m bên dưới.)
5: Tiện ích tệp sẽ kiểm tra tệp và đoán xem xác định nội dung của nó dựa trên các kiểm tra hệ thống mặc định theo ngữ cảnh. (Câu trả lời không được đảm bảo là chính xác.)
Hai người này sử dụng nhận dạng số ma thuật và là phần thú vị nhất của lệnh. Một con số kỳ diệu là một chuỗi đặc biệt của byte đó là ở một nơi được biết đến trong một file danh sách chỉ rõ loại của nó. Theo truyền thống, địa điểm đó là hai byte đầu tiên, nhưng thuật ngữ này đã được mở rộng hơn nữa để bao gồm các chuỗi dài hơn và các vị trí khác. Xem câu hỏi khác này để biết thêm chi tiết về số ma thuật trong file
lệnh.
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; cơ sở dữ liệu đó thường ở /usr/share/mime/magic
và ánh xạ nội dung tệp thành các loại MIME . Đầu ra ở đó (thường là một phần file -i
nếu bạn không nhận được theo mặc định) sẽ là loại phương tiện được xác định hoặc tiện ích mở rộng. "Các thử nghiệm nhạy cảm với bối cảnh" sử dụng cùng một cách tiếp cận, nhưng hơi khó hiểu hơn. Không ai trong số này được đảm bảo là đúng, nhưng họ dự định là những dự đoán tốt.
file
cũng có một cơ sở dữ liệu ánh xạ các loại đó thành tên, theo đó nó sẽ biết rằng một tệp mà nó đã xác định là application/pdf
có thể được mô tả là a PDF document
. Những tên dễ đọc của con người cũng có thể được định vị sang ngôn ngữ khác. Đây sẽ luôn là một số mô tả cấp cao về loại tệp theo cách mà một người sẽ hiểu, chứ không phải là một máy.
Phần lớn các kết quả đầu ra khác nhau mà bạn có thể nhận được sẽ đến từ các giai đoạn này. Bạn có thể xem magic
tệp để biết danh sách các loại được hỗ trợ và cách chúng được xác định - hệ thống của tôi biết 376 loại khác nhau. Tên được cung cấp và các loại được hỗ trợ được xác định bởi bao bì và cấu hình hệ thống của bạn và do đó hệ thống của bạn có thể hỗ trợ nhiều hơn hoặc ít hơn tên của tôi, nhưng nhìn chung có rất nhiều trong số chúng. libmagic
cũng bao gồm các bài kiểm tra mã hóa bổ sung trong đó.
6: Tệp phải được xác định là tệp dữ liệu.
Đây là foo: data
, khi nó không thể tìm ra bất cứ điều gì về tập tin.
Ngoài ra còn có các thẻ nhỏ khác có thể xuất hiện. +x
Tệp thực thi ( ) sẽ bao gồm " executable
" trong đầu ra, thường được phân tách bằng dấu phẩy. Việc file
triển khai cũng có thể biết thêm những điều về một số định dạng tệp để có thể mô tả các điểm bổ sung về chúng, như trong "" của bạn PDF document, version 1.4
.