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
Однак є кілька речей, які мені здаються незрозумілими:
Чи повинен текстовий файл бути звичайним файлом? У наведеному вище уривці прямо не сказано, що файл повинен бути звичайним файлом
Чи може вважатися файлом текстовий файл, якщо він містить лише один символ та один символ (тобто один символ, який не закінчується новим рядком)? Я знаю, що це запитання може здатися непосидючим, але вони використовують слово "символи" замість "один чи більше символів". Інші можуть не погодитися, але якщо вони означають "одного чи декількох символів", я думаю, вони повинні це прямо сказати
У наведеному вище уривку він посилається на "рядки". Я знайшов чотири визначення з рядком у їх назві: "Порожня лінія", "Відображення рядка", "Неповна лінія" та "Рядок". Чи повинен я зробити висновок, що вони означають "Рядок" через те, що вони не мають "Порожня", "Відображення" та "Неповна", - чи всі чотири ці визначення включені як такі, що вважаються рядком у вищевикладеному уривку?
Усі питання, що виникають після цього блоку тексту, залежать від висновку, що "символи" означають "один чи більше символів":
- Чи можна сміливо робити висновок, що якщо файл порожній, це не текстовий файл, оскільки він не містить одного або декількох символів?
Усі запитання, що виникають після цього блоку тексту, залежать від висновку, що у наведеному вище уривці рядок визначається як "Рядок", а інші три визначення, що містять "Рядок" у своєму імені, повинні бути виключені:
Чи означає "нуль" у "нульовому чи більше рядках", що файл все ще може вважатися текстовим файлом, якщо він містить один або більше символів, які не закінчуються новим рядком?
Чи означає "нульовий чи більше рядків", що після того, як один гра "Рядок" (0 або більше символів плюс закінчуючий новий рядок) вступає в гру, він стає незаконним, щоб останній рядок був "неповним рядком" (один або більше не- символи нового рядка в кінці файлу)?
Чи "жоден [жоден рядок] не може перевищувати {LINE_MAX} байт у довжину, включаючи символ нового рядка" означає, що в текстовому файлі є обмеження на кількість символів, дозволених у будь-якому заданому "Рядку" (як бік, значення LINE_MAX на Ubuntu 18.04 та FreeBSD 11.1 - "2048")?