回车(CR)和换行(LF)的来历与区别

回车和换行的来历与区别

”回车”(carriage return)和”换行”(line feed)这两个概念的来历和区别

这两种概念来源于一种叫做电传打字机(Teletype Model 33)的机器,”回车”意思是告诉打字机把打印头定位在左边界;”换行”意思是告诉打字机把纸向下移一行。

\r (Carriage Return):将光标移动到行首而不前进到下一行
\n (Line Feed):将光标向下移动到下一行,而不返回到该行的开头。在 *nix 环境上 \n 意味着移动到行首。
\r\n (End Of Line)\r \n的结合

Unix/Linux系统里,每行结尾只有<换行>,即\n
Windows系统里面,每行结尾是<回车><换行>,即\r\n
Mac系统里,每行结尾是<回车>。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

以 CRLF 作为换行符的文本文件经常被称作 DOS 格式文件, 而以 LF 作为换行符文本文件, 被称作 UNIX 格式文件

CRLF 还是 LF

如果进行跨平台的协同工作, 特别是使用 git 进行代码版本管理, 最好统一换行符, 建议使用 LF(即\n) 作为换行符

使用 file 命令查看 dos 格式文件:

$ file test.log 
test.log: Unicode text, UTF-8 text, with CRLF line terminators

使用 file 命令查看 unix 格式文件:

$ file test.log 
test.log: Unicode text, UTF-8 text

dos 和 unix 的相互转换

dos 格式文件转换成 Unix 格式文件, 就是把 CRLF 替换为 LF; unix 格式文件转换成 dos 格式文件, 就是把 LF 替换为 CRLF

dos2unixunix2dos

  • dos2unix: dos 格式文件转换为 unix 格式文件
  • unix2dos: unix 格式文件转换为 dos 格式文件

reference

Difference between \n and \r?

posted @ 2022-08-28 23:34  main_c  阅读(288)  评论(0)    收藏  举报