POSIX définit un fichier texte comme:
Un fichier qui contient des caractères organisés en zéro ou plusieurs lignes. Les lignes ne contiennent pas de caractères NUL et aucune ne peut dépasser {LINE_MAX} octets de longueur, y compris le caractère <newline>. Bien que POSIX.1-2017 ne fasse pas de distinction entre les fichiers texte et les fichiers binaires (voir la norme ISO C), de nombreux utilitaires ne produisent une sortie prévisible ou significative que lorsqu'ils fonctionnent sur des fichiers texte. Les utilitaires standard qui ont de telles restrictions spécifient toujours des "fichiers texte" dans leurs sections STDIN ou INPUT FILES.
Source: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
Cependant, il y a plusieurs choses que je trouve peu claires:
Un fichier texte doit-il être un fichier normal? Dans l'extrait ci-dessus, il n'est pas dit explicitement que le fichier doit être un fichier normal
Un fichier peut-il être considéré comme un fichier texte s'il contient un caractère et un seul caractère (c'est-à-dire un seul caractère qui ne se termine pas par une nouvelle ligne)? Je sais que cette question peut sembler compliquée, mais ils utilisent le mot "caractères" au lieu de "un ou plusieurs caractères". D'autres peuvent être en désaccord, mais s'ils signifient "un ou plusieurs caractères", je pense qu'ils devraient le dire explicitement
Dans l'extrait ci-dessus, il fait référence aux "lignes". J'ai trouvé quatre définitions avec une ligne dans leur nom: "Ligne vide", "Ligne d'affichage", "Ligne incomplète" et "Ligne". Suis-je censé déduire qu'ils signifient "Ligne" en raison de leur omission de "Vide", "Affichage" et "Incomplet" - ou les quatre définitions incluses sont-elles toutes considérées comme une ligne dans l'extrait ci-dessus?
Toutes les questions qui viennent après ce bloc de texte dépendent de la déduction que "caractères" signifie "un ou plusieurs caractères":
- Puis-je inférer en toute sécurité que si un fichier est vide, il ne s'agit pas d'un fichier texte car il ne contient pas un ou plusieurs caractères?
Toutes les questions qui viennent après ce bloc de texte dépendent de la déduction que dans l'extrait ci-dessus, une ligne est définie comme une "ligne", et que les trois autres définitions contenant "ligne" dans leur nom doivent être exclues:
Le «zéro» dans «zéro ou plusieurs lignes» signifie-t-il qu'un fichier peut toujours être considéré comme un fichier texte s'il contient un ou plusieurs caractères qui ne se terminent pas par un retour à la ligne?
Est-ce que «zéro ou plusieurs lignes» signifie qu'une fois qu'une seule «ligne» (0 ou plusieurs caractères plus une nouvelle ligne de fin) entre en jeu, il devient illégal que la dernière ligne soit une «ligne incomplète» (une ou plusieurs non caractères de nouvelle ligne à la fin d'un fichier)?
Est-ce que "aucune [aucune ligne] ne peut dépasser {LINE_MAX} octets de longueur, y compris le caractère de nouvelle ligne" signifie qu'il y a une limitation au nombre de caractères autorisés dans une "ligne" donnée dans un fichier texte (en passant, la valeur de LINE_MAX sur Ubuntu 18.04 et FreeBSD 11.1 est "2048")?