
回车(CR)和换行(LF)起源于电传打字机,CR用于将打印头定位在左边界,LF用于将纸向下移动一行。在不同的操作系统中,换行方式有所不同:Unix/Linux使用LF,Windows使用CRLF,Mac使用CR。在跨平台文件操作中,不统一的换行符可能导致显示问题。可以使用dos2unix和unix2dos工具进行格式转换。在代码协作中,推荐使用LF作为统一的换行符。
在编程语言当中CR回车符用\r表示 LF换行用\n 表示
”回车”(carriage return)和”换行”(line feed)这两个概念的来历和区别
这两种概念来源于一种叫做电传打字机(Teletype Model 33)的机器,”回车”意思是告诉打字机把打印头定位在左边界;”换行”意思是告诉打字机把纸向下移一行。
\r (Carriage Return):将光标移动到行首而不前进到下一行<CR>
\n (Line Feed):将光标向下移动到下一行,而不返回到该行的开头。在 unix 环境上 \n 意味着移动到行首。<LF>
\r\n (End Of Line): \r 和 \n的结合 <CR><LF>
Unix/Linux系统里,每行结尾只有<换行>,即\n
Windows系统里面,每行结尾是<回车><换行>,即\r\n;
Mac系统里,每行结尾是<回车>。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
以 CRLF 作为换行符的文本文件经常被称作 DOS 格式文件, 而以 LF 作为换行符文本文件, 被称作 UNIX 格式文件
CRLF 还是 LF
如果进行跨平台的协同工作, 特别是使用 git 进行代码版本管理, 最好统一换行符, 建议使用 LF(即\n) 作为换行符
dos 和 unix 的相互转换
dos 格式文件转换成 Unix 格式文件, 就是把 CRLF 替换为 LF; unix 格式文件转换成 dos 格式文件, 就是把 LF 替换为 CRLF
补充知识
CR(Carriage Return)表示回车 LF(Line Feed)表示换行 '\r'是回车CR,前者使光标到行首,(carriage return)ASCII码(0x0D) '\n'是换行LF,后者使光标下移一格,(line feed) ASCII码 (0x0A) \r 是回车,return \n 是换行,newline
Dos和Windows采用回车+换行(CR+LF)表示下一行
而UNIX/Linux采用换行符(LF)表示下一行
苹果机(MAC OS系统)则采用回车符(CR)表示下一行
Windows下编写的Shell脚本,直接放到linux/unix下执行会报错,就是因为行结束符不一样导致的。
Unix系统里每行结尾: “<换行>”, <LF>, 即“\n”; 0x0a
Windows系统每行结尾:“<回车><换行>”,<CR><LF>,即“\r\n”,0x0d 0x0a;
Mac系统里每行结尾: “<回车>”, <CR> 即“\r”, 0x0d。
由于dos风格的换行使用\r\n,把这样的文件上传到unix,有些版本的vi不能识别\r,所以vi显示时在行尾会出现^M出来,但是有些就能识别\r\n,正常显示回车换行。