POSIX define un archivo de texto como:
Un archivo que contiene caracteres organizados en cero o más líneas. Las líneas no contienen caracteres NUL y ninguna puede superar los {LINE_MAX} bytes de longitud, incluido el carácter <newline>. Aunque POSIX.1-2017 no distingue entre archivos de texto y archivos binarios (consulte el estándar ISO C), muchas utilidades solo producen resultados predecibles o significativos cuando operan en archivos de texto. Las utilidades estándar que tienen tales restricciones siempre especifican "archivos de texto" en sus secciones STDIN o INPUT FILES.
Fuente: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
Sin embargo, hay varias cosas que no entiendo:
¿Debe un archivo de texto ser un archivo normal? En el extracto anterior, no dice explícitamente que el archivo debe ser un archivo normal
¿Se puede considerar un archivo como un archivo de texto si contiene un carácter y solo un carácter (es decir, un solo carácter que no termina con una nueva línea)? Sé que esta pregunta puede sonar complicada, pero usan la palabra "caracteres" en lugar de "uno o más caracteres". Otros pueden estar en desacuerdo, pero si quieren decir "uno o más personajes" creo que deberían decirlo explícitamente
En el extracto anterior, hace referencia a "líneas". Encontré cuatro definiciones con línea en su nombre: "Línea vacía", "Línea de visualización", "Línea incompleta" y "Línea". ¿Se supone que debo inferir que significan "Línea" debido a su omisión de "Vacío", "Pantalla" e "Incompleto", o son las cuatro definiciones incluidas como consideradas como una línea en el extracto anterior?
Todas las preguntas que aparecen después de este bloque de texto dependen de inferir que "caracteres" significa "uno o más caracteres":
- ¿Puedo inferir con seguridad que si un archivo está vacío, no es un archivo de texto porque no contiene uno o más caracteres?
Todas las preguntas que vienen después de este bloque de texto dependen de inferir que en el extracto anterior, una línea se define como una "Línea", y que las otras tres definiciones que contienen "Línea" en su nombre deben excluirse:
¿El "cero" en "cero o más líneas" significa que un archivo aún puede considerarse un archivo de texto si contiene uno o más caracteres que no terminan con nueva línea?
¿"Cero o más líneas" significa que una vez que entra en juego una sola "Línea" (0 o más caracteres más una nueva línea de terminación), es ilegal que la última línea sea una "Línea Incompleta" (una o más líneas no caracteres de nueva línea al final de un archivo)?
¿"None [no line] puede exceder {LINE_MAX} bytes de longitud, incluido el carácter de nueva línea" significa que hay una limitación en el número de caracteres permitidos en cualquier "Línea" en un archivo de texto (como un aparte, el valor de LINE_MAX en Ubuntu 18.04 y FreeBSD 11.1 es "2048")?