Enl*_*ico -1 linux size windows newlines line
假设我在 Linux 和 Windows 上有相同的 ASCII 文本文件:
one
two
three
Run Code Online (Sandbox Code Playgroud)
这两个文件在两个操作系统上将分别具有\n和\r\n作为 EOL 字符。
这是否意味着Linux上的文件更小?
这个在 linux 上执行的测试似乎是肯定的:
$ echo -en 'one\ntwo\nthree\n' | wc --bytes
14
$ echo -en 'one\r\ntwo\r\nthree\r\n' | wc --bytes
17
Run Code Online (Sandbox Code Playgroud)
你的测试是正确的,尽管严格来说是有限的——它只表明在 Linux 上,你的echo命令产生的字符串分别占用 14 和 17 个字节,由wc --bytes. 每个\n和\r占用一个字节,因此在使用 DOS/Windows 样式的换行符时,每个换行符都会导致一个字节的损失。
严格来说,存储要求取决于您用来写入文件的程序;Linux 和 Windows 都不会对文件的内容强加任何内容。可以在 Linux 上使用 CRLF 换行符存储文件,在 Windows 上使用 LF 换行符存储文件。要确定您的文件在任一操作系统上的存储要求,您应该使用您打算在两个操作系统上使用的任何工具编写它,并使用操作系统的工具测量文件的大小。
请注意,文件通常以特定存储单元的倍数使用存储,因此与换行符相关的变化可能不会产生实际影响。