POSIXは、テキストファイルを次のように定義します。
0個以上の行に編成された文字を含むファイル。行にはNUL文字が含まれておらず、<newline>文字を含めて、長さが{LINE_MAX}バイトを超えることはできません。POSIX.1-2017はテキストファイルとバイナリファイルを区別しませんが(ISO C標準を参照)、多くのユーティリティは、テキストファイルを操作する場合にのみ予測可能または意味のある出力を生成します。このような制限がある標準ユーティリティは、STDINまたはINPUT FILESセクションで常に「テキストファイル」を指定します。
ソース:http : //pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
ただし、いくつか不明確なことがあります。
テキストファイルは通常のファイルである必要がありますか?上記の抜粋では、ファイルが通常のファイルでなければならないことを明示的に示していません
1つの文字と1つの文字のみ(つまり、改行で終わらない単一の文字)が含まれている場合、ファイルをテキストファイルと見なすことはできますか?この質問はきちんと聞こえるかもしれませんが、「1つ以上の文字」ではなく「文字」という言葉を使用しています。他の人は同意しないかもしれませんが、「1つ以上の文字」を意味する場合は、明示的に言う必要があると思います
上記の抜粋では、「行」を参照しています。名前に「空の行」、「表示行」、「不完全な行」、「行」という名前の行がある4つの定義が見つかりました。「空」、「表示」、「不完全」が省略されているため、「行」を意味すると推測するのか、またはこれらの定義の4つすべてが上記の抜粋の行と見なされているのですか?
このテキストブロックの後に来るすべての質問は、「文字」が「1つ以上の文字」を意味するという推論に依存しています。
- ファイルが空の場合、1つ以上の文字が含まれていないため、テキストファイルではないと推測できますか?
このテキストブロックの後に来るすべての質問は、上記の抜粋では、行が「行」として定義され、名前に「行」を含む他の3つの定義は除外されるべきであるという推論に依存します:
「ゼロ行以上」の「ゼロ」は、改行で終わらない1つ以上の文字が含まれているファイルがテキストファイルと見なされることを意味しますか?
「ゼロ以上の行」とは、1つの「行」(0以上の文字と終了する改行)が登場すると、最後の行が「不完全な行」(1つ以上の非行ファイルの最後の改行文字)?
「なし[行なし]は、改行文字を含めて{LINE_MAX}バイトを超えることはできません」とは、テキストファイル内の特定の「行」で許可される文字数に制限があることを意味しますかUbuntu 18.04およびFreeBSD 11.1のLINE_MAXは「2048」ですか?