POSIX将文本文件定义为:
包含以零行或更多行组织的字符的文件。这些行不包含NUL字符,并且长度都不能超过{LINE_MAX}个字节,包括<newline>字符。尽管POSIX.1-2017不能区分文本文件和二进制文件(请参阅ISO C标准),但是许多实用程序在对文本文件进行操作时只能产生可预测或有意义的输出。具有此类限制的标准实用程序始终在其STDIN或INPUT FILES部分中指定“文本文件”。
来源:http://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap03.html#tag_03_403
但是,有几件事我不清楚:
文本文件必须是常规文件吗?在上面的摘录中,它没有明确指出文件必须是常规文件
如果文件仅包含一个字符和一个字符(即,一个不以换行符终止的字符),可以将其视为文本文件吗?我知道这个问题听起来很挑剔,但是他们使用“字符”一词代替了“一个或多个字符”。其他人可能会不同意,但是如果他们的意思是“一个或多个字符”,我认为他们应该明确地说出来
在上面的摘录中,它引用了“线条”。我在名称中找到了四个带有行的定义:“空行”,“显示行”,“不完整行”和“行”。我是否应该推断出它们是由于省略了“空”,“显示”和“不完整”而表示“行”的?还是上述所有四个定义都包括在内?
此文本段之后出现的所有问题均取决于推断“字符”是指“一个或多个字符”:
- 我可以安全地推断出,如果一个文件为空,则它不是文本文件,因为它不包含一个或多个字符?
此文本段之后出现的所有问题均取决于推断,在上述摘录中,一行定义为“行”,并且应排除名称中包含“行”的其他三个定义:
“零个或多个行”中的“零”是否意味着如果文件包含一个或多个未以换行符终止的字符,仍可以将其视为文本文件?
“零行或更多行”是否表示一旦出现一个“行”(0个或多个字符加上一个换行符),则最后一行成为“不完整行”(一个或多个非文件末尾的换行符)?
“没有[没有行]的长度不能超过{LINE_MAX}个字节,包括换行符”是否表示文本文件中任何给定“行”中允许的字符数有限制(顺便说一句,在Ubuntu 18.04和FreeBSD 11.1上的LINE_MAX是“ 2048”)吗?