POSIX definisce un file di testo come:
Un file che contiene caratteri organizzati in zero o più righe. Le righe non contengono caratteri NUL e nessuna può superare i {LINE_MAX} byte di lunghezza, incluso il carattere <newline>. Sebbene POSIX.1-2017 non distingua tra file di testo e file binari (vedere lo standard ISO C), molte utility producono output prevedibili o significativi solo quando si opera su file di testo. Le utility standard che hanno tali restrizioni specificano sempre "file di testo" nelle loro sezioni STDIN o INPUT FILES.
Fonte: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
Tuttavia, ci sono diverse cose che trovo poco chiare:
Un file di testo deve essere un file normale? Nell'estratto sopra non si dice esplicitamente che il file deve essere un file normale
Un file può essere considerato un file di testo se contiene un solo carattere e un solo carattere (ovvero un singolo carattere che non termina con una nuova riga)? So che questa domanda può sembrare nitida, ma usano la parola "caratteri" invece di "uno o più caratteri". Altri potrebbero non essere d'accordo, ma se significano "uno o più personaggi" penso che dovrebbero dirlo esplicitamente
Nell'estratto sopra riportato, fa riferimento a "linee". Ho trovato quattro definizioni con la riga nel loro nome: "Linea vuota", "Linea di visualizzazione", "Linea incompleta" e "Linea". Devo dedurre che significano "Linea" a causa della loro omissione di "Vuoto", "Display" e "Incomplete" - oppure tutte e quattro queste definizioni sono considerate una riga nell'esempio sopra?
Tutte le domande che seguono questo blocco di testo dipendono dall'ipotesi che "caratteri" significhi "uno o più caratteri":
- Posso dedurre con sicurezza che se un file è vuoto, non è un file di testo perché non contiene uno o più caratteri?
Tutte le domande che sorgono dopo questo blocco di testo dipendono dall'ipotesi che nell'esempio precedente una linea sia definita come "Linea" e che le altre tre definizioni contenenti "Linea" nel loro nome debbano essere escluse:
Lo "zero" in "zero o più righe" significa che un file può ancora essere considerato un file di testo se contiene uno o più caratteri che non sono terminati con newline?
"Zero o più righe" significa che una volta che una singola "Linea" (0 o più caratteri più una nuova riga che termina entra in gioco) diventa illegale che l'ultima riga sia una "Linea incompleta" (una o più non - caratteri di nuova riga alla fine di un file)?
"Nessuna [nessuna riga] può superare i {LINE_MAX} byte di lunghezza, incluso il carattere di nuova riga" significa che esiste un limite al numero di caratteri consentiti in una determinata "Linea" in un file di testo (a parte, il valore di LINE_MAX su Ubuntu 18.04 e FreeBSD 11.1 è "2048")?