https://blog.csdn.net/qq_38405680/article/details/80554549
CR(Carriage Return)表示回車
LF(Line Feed)表示換行
Dos和Windows采用回車+換行(CR+LF)表示下一行
而UNIX/Linux采用換行符(LF)表示下一行
蘋果機(jī)(MAC OS系統(tǒng))則采用回車符(CR)表示下一行
Windows下編寫的Shell腳本拷肌,直接放到linux/unix下執(zhí)行會(huì)報(bào)錯(cuò)补胚,就是因?yàn)樾薪Y(jié)束符不一樣導(dǎo)致的由捎。
現(xiàn)在好多文本工具都提供了轉(zhuǎn)換功能耙箍,如notepad2:
-------------------------------------------------------------------------------------------
'\r'是回車旁振,前者使光標(biāo)到行首囱淋,(carriage return)ASCII碼(0x0D)
'\n'是換行嗜闻,后者使光標(biāo)下移一格斩芭,(line feed)ASCII碼(0xoA)
\r 是回車乏冀,return
\n 是換行蝶糯,newline
對于換行這個(gè)動(dòng)作,unix下一般只有一個(gè)0x0A表示換行("\n")辆沦,windows下一般都是0x0D和0x0A兩個(gè)字符("\r\n")昼捍,蘋果機(jī)(MAC OS系統(tǒng))則采用回車符CR表示下一行(\r)
Unix系統(tǒng)里,每行結(jié)尾只有“<換行>”肢扯,即“\n”妒茬;
Windows系統(tǒng)里面,每行結(jié)尾是“<回車><換行>”蔚晨,即“\r\n”乍钻;
Mac系統(tǒng)里,每行結(jié)尾是“<回車>”,即“\r”铭腕。
一個(gè)直接后果是银择,Unix/Mac系統(tǒng)下的文件在Windows里打開的話,所有文字會(huì)變成一行累舷;而Windows里的文件在Unix下打開的話欢摄,在每行的結(jié)尾會(huì)多車一個(gè)^M字符。
Dos和windows采用回車+換行CR/LF表示下一行,即^M$($不是換行符的表示笋粟,換行符沒有表示出來,$是文本結(jié)束EOF的表示)
而UNIX/Linux采用換行符LF表示下一行析蝴,即\n
蘋果機(jī)(MAC OS系統(tǒng))則采用回車符CR表示下一行害捕,即\r
CR用符號'\r'表示, 十進(jìn)制ASCII代碼是13,十六進(jìn)制代碼為0x0D;
LF使用'\n'符號表示,ASCII代碼是10, 十六制為0x0A. 所以Windows平臺上換行在文本文件中是使用 0d 0a 兩個(gè)字節(jié)表示, 而UNIX和蘋果平臺上換行則是使用0a或0d一個(gè)字節(jié)表示.
由于dos風(fēng)格的換行使用\r\n,把這樣的文件上傳到unix闷畸,有些版本的vi不能識別\r尝盼,所以vi顯示時(shí)在行尾會(huì)出現(xiàn)^M出來,但是有些就能識別\r\n佑菩,正常顯示回車換行盾沫。