POSIX định nghĩa một tệp văn bản là:
Một tệp chứa các ký tự được tổ chức thành không hoặc nhiều dòng. Các dòng không chứa các ký tự NUL và không có ký tự nào có thể vượt quá {LINE_MAX} byte, bao gồm cả ký tự <newline>. Mặc dù POSIX.1-2017 không phân biệt giữa tệp văn bản và tệp nhị phân (xem tiêu chuẩn ISO C), nhiều tiện ích chỉ tạo ra đầu ra có thể dự đoán hoặc có ý nghĩa khi hoạt động trên tệp văn bản. Các tiện ích tiêu chuẩn có các hạn chế như vậy luôn chỉ định "tệp văn bản" trong phần STDIN hoặc INPUT PHIM.
Nguồn: http://pub.opengroup.org/onlinepub/9699919799/basingefs/V1_chap03.html#tag_03_403
Tuy nhiên, có một số điều tôi thấy không rõ ràng:
Phải là một tệp văn bản là một tệp thông thường? Trong đoạn trích trên, không nói rõ ràng tệp phải là tệp thông thường
Một tệp có thể được coi là một tệp văn bản nếu chỉ chứa một ký tự và một ký tự (nghĩa là một ký tự không bị chấm dứt với một dòng mới)? Tôi biết câu hỏi này nghe có vẻ khó chịu, nhưng họ sử dụng từ "ký tự" thay vì "một hoặc nhiều ký tự". Những người khác có thể không đồng ý, nhưng nếu họ có nghĩa là "một hoặc nhiều nhân vật" thì tôi nghĩ họ nên nói rõ ràng
Trong đoạn trích trên, nó làm tham chiếu đến "dòng". Tôi đã tìm thấy bốn định nghĩa với dòng trong tên của chúng: "Dòng trống", "Dòng hiển thị", "Dòng không đầy đủ" và "Dòng". Tôi có nên suy luận rằng chúng có nghĩa là "Dòng" vì thiếu sót "Trống", "Hiển thị" và "Chưa hoàn thành" - hay cả bốn định nghĩa này đều được coi là một dòng trong đoạn trích ở trên?
Tất cả các câu hỏi xuất hiện sau khối văn bản này phụ thuộc vào việc suy ra rằng "ký tự" có nghĩa là "một hoặc nhiều ký tự":
- Tôi có thể suy luận một cách an toàn rằng nếu một tệp trống, thì đó không phải là tệp văn bản vì nó không chứa một hoặc nhiều ký tự?
Tất cả các câu hỏi xuất hiện sau khối văn bản này phụ thuộc vào suy luận rằng trong đoạn trích trên, một dòng được định nghĩa là "Dòng" và ba loại định nghĩa khác có chứa "Dòng" trong tên của chúng phải được loại trừ:
Liệu "zero" trong "zero hoặc nhiều dòng" có nghĩa là một tệp vẫn có thể được coi là tệp văn bản nếu nó chứa một hoặc nhiều ký tự không được kết thúc bằng dòng mới?
Có phải "không hoặc nhiều dòng" có nghĩa là một khi một "Dòng" (0 hoặc nhiều ký tự cộng với một dòng mới kết thúc) xuất hiện, thì việc dòng cuối cùng trở thành "Dòng không hoàn chỉnh" (một hoặc nhiều dòng không phải là không hợp lệ) ký tự dòng mới ở cuối tập tin)?
Có phải "không [không có dòng] nào có thể vượt quá độ dài {LINE_MAX} byte, bao gồm cả ký tự dòng mới" có nghĩa là có giới hạn về số lượng ký tự được cho phép trong bất kỳ "Dòng" nào trong tệp văn bản (như là một giá trị của LINE_MAX trên Ubuntu 18.04 và FreeBSD 11.1 là "2048")?