關於行結束符(CR、LF)、回車、換行


來源:https://blog.csdn.net/qq_38405680/article/details/80554549

----------------------------------------------------------------------------------------------

CR(Carriage Return)表示回車

LF(Line Feed)表示換行

 

Dos和Windows采用回車+換行(CR+LF)表示下一行
而UNIX/Linux采用換行符(LF)表示下一行
蘋果機(MAC OS系統)則采用回車符(CR)表示下一行

 

Windows下編寫的Shell腳本,直接放到linux/unix下執行會報錯,就是因為行結束符不一樣導致的。

 

現在好多文本工具都提供了轉換功能,如notepad2:

 

 

 

-------------------------------------------------------------------------------------------

 

'\r'是回車,前者使光標到行首,(carriage return)ASCII碼(0x0D)
'\n'是換行,后者使光標下移一格,(line feed)ASCII碼(0xoA)

\r 是回車,return
\n 是換行,newline
對於換行這個動作,unix下一般只有一個0x0A表示換行("\n"),windows下一般都是0x0D和0x0A兩個字符("\r\n"),蘋果機(MAC OS系統)則采用回車符CR表示下一行(\r)

Unix系統里,每行結尾只有“<換行>”,即“\n”;
Windows系統里面,每行結尾是“<回車><換行>”,即“\r\n”;
Mac系統里,每行結尾是“<回車>”,即“\r”。
一個直接后果是,Unix/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;而Windows里的文件在Unix下打開的話,在每行的結尾會多車一個^M字符。
Dos和windows采用回車+換行CR/LF表示下一行,即^M$($不是換行符的表示,換行符沒有表示出來,$是文本結束EOF的表示)
而UNIX/Linux采用換行符LF表示下一行,即\n
蘋果機(MAC OS系統)則采用回車符CR表示下一行,即\r

CR用符號'\r'表示, 十進制ASCII代碼是13, 十六進制代碼為0x0D;
LF使用'\n'符號表示, ASCII代碼是10, 十六制為0x0A. 所以Windows平台上換行在文本文件中是使用 0d 0a 兩個字節表示, 而UNIX和蘋果平台上換行則是使用0a或0d一個字節表示.

由於dos風格的換行使用\r\n,把這樣的文件上傳到unix,有些版本的vi不能識別\r,所以vi顯示時在行尾會出現^M出來,但是有些就能識別\r\n,正常顯示回車換行。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM