2021-05-12 14:32:11
Dos與Linux的斷行字元
2020-06-16 16:58:50
Symptom
Dos和Linux下面的斷行字元是不一樣的,至於哪裡不一樣的呢,先舉個例子看一看
Cause
我們也可以使用cat -A filename
分別檢視Dos和Linux下建立的檔案,會發現Dos下面以^M$
作為斷行符,稱為CR與LF
兩個字元(rn),Linux下面僅以$(LF)
作為斷行符(n)。這個斷行符對Linux影響是很大的,如果這一點不清楚在編寫shell的時候很容易踩進坑,卻不知道問題在哪,說多了都是淚。
Linux下命令在開始執行的時候它的判斷依據是Enter
,linux的Enter
為LF
符號。而Dos下面多了一個^M
符號。在這樣的情況下,如果是一個shell script 的程式檔案,將可能造成程式不能執行的狀態。
所以不建議在Win下面把檔案編輯好再上傳到伺服器這種做法,這樣會很容易出現錯誤,如果你這樣做了,並且出現了問題,請往下面看。
Resolution
將格式轉化為Linux即可,一種可行的方式是使用命令來進行格式轉換dos2unix
。
dos2unix [-kn] file [newfile]
-k:保留該檔案的mtime,即不更新檔案的上次的修訂實踐
-n:保留原本的舊檔案,如果將轉換後的內容輸出到新的檔案,如:dos2unix -n old new
相應對的還有unix2dos,這裡就不做贅述。
本文永久更新連結地址:http://www.linuxidc.com/Linux/2017-12/149561.htm
相關文章