在Windows中
\r:表示回車,回到當前行的行首,而不會換到下一行,如果接著輸出的話,本行以前的內容會被逐一覆蓋(光標在該行的頭部)
\r\n:表示換行,換到當前位置的下一行(光標在下一行的頭部)
在Unix/Linux系統中
\n:表示換行
在Mac中
\r:表示換行
可能的問題
Unix/Linux/Mac系統下的文件在Windows里打開的話,所有文字會變成一行;
而Windows里的文件在Unix/Linux/Mac下打開的話,在每行的結尾可能會多出一個^M符號.
$ echo -en '12\n34\r56\n\r78\r\n' > tmp.txt
windows中的效果: 顯示在一行,最后的\r\n才實現換行.

linux中的效果 : 出現^M符號.

注意:
windows中,\r\n才會換行,缺少一個控制符或者順序不對,都不能正確的另起一行.\r或\n只能夠顯示一個字符,是沒有換行的效果的.
————————————————
#產生的歷史原因:
二戰中,出現了電傳打字機。
這種打字機是機械式針頭,每秒只能打印10個字符,當針頭跑完第一行,從最右邊下移到第2行的最左邊時,需要耗時0.2秒,從而導致會丟失2個字符。
于是,研制人員想了一個辦法:在每行后面加兩個表示結束的字符,目的就是解決這個0.2秒的延遲問題
1)一個字符是: 回車(\r):CR(Carriage Return的縮寫,Ascii碼是13),告訴打字機需要“把打印頭定位在行首”;
2)一個字符是: 換行(\n):LF(Line Feed的縮寫,Ascii碼是10),告訴打字機“把打印紙向下移動一行”;
ntenteditable="false" style="border: 0px; max-width: 100%;" width="676" height="501" alt="" />
二戰中美國使用的打字機
# 業界現狀:
電子計算機問世后,這兩個概念也同時被引入。
因為存儲器很貴,一些科學家認為在每行結尾加兩個字符太浪費了,加一個就夠了。
從此,計算機界就出現了分歧。
微軟Windows系統:每行結尾有“<回車><換行>”,即“\r\n”
Unix/Linux系統: 每行結尾只有“<換行>”,即"\n"
蘋果Mac系統: 每行結尾只有“<回車>”,即"\r"
由此產生的后果是:
Unix/Linux/Mac系統生成的文本文件,當在Windows里打開時,會變成一行;
而Windows文件在Unix/Linux/Mac系統下打開時,會在每行的結尾會多出一個^M符號。