POSIX definiert eine Textdatei als:
Eine Datei, die Zeichen enthält, die in null oder mehr Zeilen angeordnet sind. Die Zeilen enthalten keine NUL-Zeichen und keine darf länger als {LINE_MAX} Byte sein, einschließlich des Zeichens <newline>. Obwohl POSIX.1-2017 nicht zwischen Textdateien und Binärdateien unterscheidet (siehe ISO C-Standard), erzeugen viele Dienstprogramme nur vorhersehbare oder aussagekräftige Ausgaben, wenn sie mit Textdateien arbeiten. Die Standarddienstprogramme, für die solche Einschränkungen gelten, geben in ihren Abschnitten STDIN oder INPUT FILES immer "Textdateien" an.
Quelle: http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
Es gibt jedoch einige Dinge, die mir unklar sind:
Muss eine Textdatei eine normale Datei sein? Im obigen Auszug heißt es nicht ausdrücklich, dass die Datei eine reguläre Datei sein muss
Kann eine Datei als Textdatei betrachtet werden, wenn sie nur ein Zeichen und ein Zeichen enthält (dh ein einzelnes Zeichen, das nicht mit einem Zeilenumbruch abgeschlossen wird)? Ich weiß, diese Frage klingt vielleicht pingelig, aber sie verwenden das Wort "Zeichen" anstelle von "einem oder mehreren Zeichen". Andere mögen anderer Meinung sein, aber wenn sie "ein oder mehrere Zeichen" bedeuten, denke ich, sollten sie es explizit sagen
Im obigen Auszug wird auf "Zeilen" verwiesen. Ich habe vier Definitionen gefunden, deren Name Zeile enthält: "Leere Zeile", "Zeile anzeigen", "Unvollständige Zeile" und "Zeile". Soll ich daraus schließen, dass sie "Zeile" bedeuten, weil "Leer", "Anzeige" und "Unvollständig" weggelassen wurden - oder sind alle vier dieser Definitionen als Zeile im obigen Auszug enthalten?
Alle Fragen, die nach diesem Textblock gestellt werden, hängen davon ab, ob "Zeichen" "ein oder mehrere Zeichen" bedeuten:
- Kann ich sicher schließen, dass eine leere Datei keine Textdatei ist, da sie kein oder mehrere Zeichen enthält?
Alle Fragen, die nach diesem Textblock gestellt werden, hängen davon ab, dass im obigen Auszug eine Zeile als "Zeile" definiert ist und dass die anderen drei Definitionen, deren Name "Zeile" enthält, ausgeschlossen werden sollten:
Bedeutet die "Null" in "Null oder mehr Zeilen", dass eine Datei immer noch als Textdatei betrachtet werden kann, wenn sie ein oder mehrere Zeichen enthält, die nicht mit einem Zeilenumbruch abgeschlossen sind?
Bedeutet "null oder mehr Zeilen", dass, sobald eine einzelne "Zeile" (0 oder mehr Zeichen plus eine abschließende neue Zeile) ins Spiel kommt, die letzte Zeile als "unvollständige Zeile" (eine oder mehrere nicht Zeilenumbruchzeichen am Ende einer Datei)?
Bedeutet "keine [keine Zeile] darf die Länge von {LINE_MAX} Byte einschließlich des Zeilenumbruchs überschreiten", dass die Anzahl der Zeichen in einer bestimmten "Zeile" in einer Textdatei begrenzt ist (abgesehen vom Wert von LINE_MAX unter Ubuntu 18.04 und FreeBSD 11.1 ist "2048")?