POSIX define um arquivo de texto como:
Um arquivo que contém caracteres organizados em zero ou mais linhas. As linhas não contêm caracteres NUL e nenhuma pode exceder {LINE_MAX} bytes de comprimento, incluindo o caractere <newline>. Embora o POSIX.1-2017 não faça distinção entre arquivos de texto e arquivos binários (consulte o padrão ISO C), muitos utilitários produzem apenas resultados previsíveis ou significativos ao operar em arquivos de texto. Os utilitários padrão que possuem essas restrições sempre especificam "arquivos de texto" nas seções STDIN ou INPUT FILES.
Fonte: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
No entanto, há várias coisas que acho incertas:
Um arquivo de texto deve ser regular? No trecho acima, não diz explicitamente que o arquivo deve ser um arquivo regular
Um arquivo pode ser considerado um arquivo de texto se contiver apenas um caractere e um caractere (ou seja, um único caractere que não termine com uma nova linha)? Sei que essa pergunta pode parecer insidiosa, mas eles usam a palavra "caracteres" em vez de "um ou mais caracteres". Outros podem discordar, mas se eles significam "um ou mais caracteres", acho que deveriam dizer isso explicitamente
No trecho acima, ele faz referência a "linhas". Encontrei quatro definições com linhas no nome: "Linha Vazia", "Linha de Exibição", "Linha Incompleta" e "Linha". Devo inferir que eles significam "Linha" devido à omissão de "Vazio", "Exibição" e "Incompleto" - ou todas essas quatro definições são inclusivas como consideradas uma linha no trecho acima?
Todas as perguntas que surgem após esse bloco de texto dependem da dedução de que "caracteres" significa "um ou mais caracteres":
- Posso deduzir com segurança que, se um arquivo está vazio, não é um arquivo de texto porque não contém um ou mais caracteres?
Todas as perguntas que surgem após esse bloco de texto dependem da dedução de que, no trecho acima, uma linha é definida como "Linha" e que as outras três definições que contêm "Linha" em seu nome devem ser excluídas:
O "zero" em "zero ou mais linhas" significa que um arquivo ainda pode ser considerado um arquivo de texto se contiver um ou mais caracteres que não são finalizados com nova linha?
"Zero ou mais linhas" significa que, uma vez que uma única "Linha" (0 ou mais caracteres mais uma nova linha final) entra em jogo, torna-se ilegal que a última linha seja uma "Linha incompleta" (uma ou mais linhas não- caracteres de nova linha no final de um arquivo)?
"Nenhuma [nenhuma linha] pode exceder {LINE_MAX} bytes de comprimento, incluindo o caractere de nova linha" significa que há uma limitação ao número de caracteres permitidos em qualquer "Linha" em um arquivo de texto (como um aparte, o valor de LINE_MAX no Ubuntu 18.04 e FreeBSD 11.1 é "2048")?