不同平臺windows、linux、mac 上換行符的問題處理

0.01 不同平臺上換行符的問題

##1,不同平臺對換行符的制定不同

windows <回車換行> (carriage return AND line feed) “\r\n” CRLF

Unix系統 <換行> (carriage return) “\n” CR

window unix mac 等平臺,換行符的不同:

系統 換行符
windows \r\n
unix \n
mac \r

2,由於換行符的不同,在不同系統之間傳遞文件產生的問題

1,文本顯示問題,windows 下的文件在linux 下會產生 ^M 符號,而 linux 下創建編輯的文件 在windows 下會顯示成一行;(edit plus 等軟件可以很好區分除外)
2,window 下寫的shell腳本不能再linux下執行了(shell 解釋器對用換行符作爲一個命令的提交)
3,影響版本控制軟件呢的檢入檢出,(git對於工作空間和版本庫中換行符有轉換控制)產生一些無用的文件差異(git diff),尤其在多人協作中,每個人設置的換行符模式不同。
3,有時產生莫名其妙的問題,如果找不到原因,應該懷疑下是不是換行符的問題;

3,不同平臺換行符的轉化

windows -> unix :
1,用unix 平臺的命令工具:

   1,  cat a.txt | tr -d "^M" > b.txt
   2,  cat a.txt | sed 's/^M//g'
   3,  vim 中執行sed 命令替換 ( :^,$ s/^m//g ;or  :s/\r//g; )
   4, dos2unix  文件   (適用與對文件夾所有文件進行轉化)

unix ->windows :
在window 平臺適用 UltraEdit 和 EditPlus 等工具的 可以設置換行模式進行自動轉化

或者在unix 平臺中使用命令:

   1,  cat a.txt | sed 's/\n/\r\n/g'
   2, unix2dos  文件   (適用與對文件夾所有文件進行轉化)

4,在開發方面如何避免換行問題

1,ide 中像設置編碼一樣,強制在工程工作區間級別設置文件換行 爲linux 風格(設置爲linux 風格的主要原因是有利與使用git少出錯,有潔癖的想法是 還能省\r 這一個字節的內容消耗,那個文件沒有換行? 總體來看是個划算的做法:})
eclipse 中,Windows -> Preference -> General -> workspace: [外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-6uv9q0Hy-1590649341231)(https://img-blog.csdn.net/20150430142614050?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvbGl1c2h1aWppbmdlcg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center)]

idea 中 ,
1,File->Settings…(Ctrl+Alt+S)
2,Editor->Code Style 裏面的Line separator(for new files): 選擇Unix and OS X(\n)
[外鏈圖片轉存失敗,源站可能有防盜鏈機制,建議將圖片保存下來直接上傳(img-KUtFWpTX-1590649341232)(http://i.imgur.com/jS5cRAa.png?_=5650297)]

2,gitbash 中設置默認檢入檢出換行符爲linux(\n)風格:(爲了團隊更好的協作)
1,開啓自動換行

     [a@b]$ git config --global core.autocrlf true

#簽出時將換行符轉換成CRLF,簽入時轉換回 LF。 	git config --global core.autocrlf true   
#簽出時不轉換換行符,簽入時轉換回 LF  			git config --global core.autocrlf input   
#簽出簽入均不轉換 								git config --global core.autocrlf false

2,開啓安全換行

     [a@b]$ git config --global core.safecrlf true
   解釋:
   如果你把換行符搞亂了,在一個文件中既包含windows風格的換行符也包含unix風格換行符,那麼 safecrlf 就可以發揮作用了:
#拒絕提交包含混合換行符的文件 	git config --global core.safecrlf true   
#允許提交包含混合換行符的文件 	git config --global core.safecrlf false   
#提交包含混合換行符的文件時候給出警示 git config --global core.safecrlf warn
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章