Không có câu trả lời 100% đen hoặc trắng ở đây.
Thông thường Linux không dựa vào tên tệp (và phần mở rộng tệp, tức là phần của tên tệp sau khoảng thời gian bình thường cuối cùng) và thay vào đó xác định loại tệp bằng cách kiểm tra một vài byte đầu tiên của nội dung và so sánh với danh sách các số ma thuật đã biết .
Ví dụ: tất cả các tệp hình ảnh Bitmap (thường có phần mở rộng tên .bmp
) phải bắt đầu bằng các chữ cái BM
trong hai byte đầu tiên của chúng. Các tập lệnh trong hầu hết các ngôn ngữ tập lệnh như Bash, Python, Perl, AWK, v.v. (về cơ bản mọi thứ xử lý các dòng bắt đầu bằng #
nhận xét) có thể chứa một shebang như #!/bin/bash
dòng đầu tiên. Nhận xét đặc biệt này cho hệ thống biết ứng dụng nào để mở tệp.
Vì vậy, thông thường hệ điều hành phụ thuộc vào nội dung tệp chứ không phải tên của nó để xác định loại tệp, nhưng nói rằng phần mở rộng tệp không bao giờ cần trên Linux chỉ là một nửa sự thật.
Các ứng dụng tất nhiên có thể thực hiện kiểm tra tệp của họ theo cách họ muốn, bao gồm xác minh tên tệp và phần mở rộng. Một ví dụ là Eye of Gnome ( eog
, trình xem ảnh tiêu chuẩn) xác định định dạng hình ảnh bằng phần mở rộng tập tin và đưa ra lỗi nếu nó không khớp với nội dung. Cho dù đây là một lỗi hay một tính năng có thể được thảo luận ...
Tuy nhiên, ngay cả một số phần của hệ điều hành cũng dựa vào các phần mở rộng tên tệp, ví dụ như khi phân tích cú pháp các nguồn phần mềm của bạn trong /etc/apt/sources.list.d/
- chỉ các tệp có *.list
phần mở rộng được phân tích cú pháp, tất cả các phần khác đều bị bỏ qua. Nó có thể không chủ yếu được sử dụng để xác định loại tệp ở đây mà là để bật / tắt phân tích cú pháp một số tệp, nhưng nó vẫn là một phần mở rộng tệp ảnh hưởng đến cách hệ thống xử lý tệp.
Và tất nhiên lợi nhuận sử dụng con người nhất từ phần mở rộng tập tin mà làm cho các loại của một tập tin rõ ràng và cũng cho phép nhiều file với tên cơ sở tương tự và phần mở rộng khác nhau như site.html
, site.php
, site.js
, site.css
, vv Những bất lợi là tất nhiên rằng tập tin mở rộng và thực tế loại tập tin / nội dung không nhất thiết phải phù hợp.
Ngoài ra, nó cần thiết cho khả năng tương tác đa nền tảng, ví dụ như Windows sẽ không biết phải làm gì với một readme
tệp, nhưng chỉ một readme.txt
.