首頁 > 軟體

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的EnterLF符號。而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


IT145.com E-mail:sddin#qq.com