POSIX กำหนดไฟล์ข้อความเป็น:
ไฟล์ที่มีตัวอักษรจัดเป็นศูนย์หรือมากกว่าบรรทัด บรรทัดไม่มีอักขระ NUL และไม่มีความยาวเกิน {LINE_MAX} ไบต์รวมถึงอักขระ <newline> แม้ว่า POSIX.1-2017 จะไม่แยกความแตกต่างระหว่างไฟล์ข้อความและไฟล์ไบนารี (ดูมาตรฐาน ISO C) แต่ยูทิลิตี้จำนวนมากจะสร้างเอาต์พุตที่สามารถคาดการณ์ได้หรือมีความหมายเมื่อทำงานกับไฟล์ข้อความ ยูทิลิตี้มาตรฐานที่มีข้อ จำกัด ดังกล่าวจะระบุ "ไฟล์ข้อความ" ในส่วน STDIN หรือ INPUT FILES เสมอ
ที่มา: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
อย่างไรก็ตามมีหลายสิ่งที่ฉันไม่ชัดเจน:
ไฟล์ข้อความต้องเป็นไฟล์ปกติหรือไม่ ในข้อความที่ตัดตอนมาข้างต้นมันไม่ได้บอกอย่างชัดเจนว่าไฟล์จะต้องเป็นไฟล์ปกติ
ไฟล์สามารถพิจารณาเป็นไฟล์ข้อความได้หรือไม่หากมีอักขระหนึ่งตัวและหนึ่งตัวเท่านั้น (เช่นอักขระเดียวที่ไม่ได้ขึ้นบรรทัดใหม่ด้วย) ฉันรู้ว่าคำถามนี้อาจฟังดูไร้ค่า แต่พวกเขาใช้คำว่า "ตัวอักษร" แทน "หนึ่งตัวหรือมากกว่า" คนอื่นอาจไม่เห็นด้วย แต่ถ้าพวกเขาหมายถึง "หนึ่งตัวหรือมากกว่า" ฉันคิดว่าพวกเขาควรพูดอย่างชัดเจน
ในข้อความที่ตัดตอนมาด้านบนมันทำให้การอ้างอิงถึง "เส้น" ฉันพบคำจำกัดความสี่บรรทัดในชื่อ: "Empty Line", "Display Line", "Inline Complete Line" และ "Line" ฉันควรจะอนุมานว่าพวกเขาหมายถึง "บรรทัด" เพราะพวกเขาละเว้น "ว่างเปล่า", "แสดง" และ "ไม่สมบูรณ์" - หรือทั้งสี่คำจำกัดความเหล่านี้รวมอยู่ในการพิจารณาว่าเป็นบรรทัดในข้อความที่ตัดตอนมาด้านบนหรือไม่
คำถามทั้งหมดที่มาหลังจากบล็อกข้อความนี้ขึ้นอยู่กับการอนุมานว่า "ตัวอักษร" หมายถึง "ตัวละครอย่างน้อยหนึ่งตัว":
- ฉันสามารถอนุมานได้อย่างปลอดภัยหรือไม่ว่าหากไฟล์นั้นว่างเปล่ามันไม่ใช่ไฟล์ข้อความเพราะมันไม่มีตัวอักษรอย่างน้อยหนึ่งตัว?
คำถามทั้งหมดที่มาหลังจากบล็อกข้อความนี้ขึ้นอยู่กับการอนุมานว่าในข้อความที่ตัดตอนมาข้างต้นบรรทัดนั้นถูกกำหนดเป็น "บรรทัด" และอีกสามคำจำกัดความที่มี "บรรทัด" ในชื่อของพวกเขาควรได้รับการยกเว้น:
"ศูนย์" ใน "ศูนย์หรือมากกว่าบรรทัด" หมายความว่าไฟล์ยังสามารถพิจารณาเป็นไฟล์ข้อความได้หากมีอักขระอย่างน้อยหนึ่งตัวที่ไม่ได้ถูกยกเลิกด้วยการขึ้นบรรทัดใหม่
"เป็นศูนย์หรือมากกว่าบรรทัด" หมายความว่าเมื่อมี "บรรทัด" เดียว (0 หรือมากกว่าตัวอักษรรวมทั้งขึ้นบรรทัดใหม่ยกเลิก) เข้ามาเล่นว่ามันจะผิดกฎหมายสำหรับบรรทัดสุดท้ายที่จะเป็น "สายไม่สมบูรณ์" (หรือมากกว่าหนึ่ง - อักขระขึ้นบรรทัดใหม่ท้ายไฟล์)?
"ไม่มี [ไม่มีบรรทัด] เกินความยาว {LINE_MAX} ไบต์รวมถึงอักขระบรรทัดใหม่" หมายความว่ามีข้อ จำกัด จำนวนอักขระที่อนุญาตใน "บรรทัด" ใด ๆ ที่กำหนดในไฟล์ข้อความ (นอกเหนือจากค่าของ LINE_MAX บน Ubuntu 18.04 และ FreeBSD 11.1 คือ "2048")?