天天看點

DOS與Linux的換行字元

一、vim打開window下的檔案出現 ^M

首先了解,dos(windows)下建立的檔案的換行是  ^M\$ (CRLF) ,而在Linux下面,僅僅是以 \$ (LF) 來做斷行符号;

(^M\$ 其實沒有 \ ,隻不過,編輯器預設會使其變為特殊符号,是以加了反斜線)

這就造成了,vim打開dos檔案時,每行末尾出現^M的符号

而這個符号影響很大,如果是一個 shell script 腳本,可造成 “程式無法執行”的狀态

那麼如何解決呢?

二、避免每行出現^M以及解決辦法

1. 可設定所使用的編輯器的斷行

  如 sublime text 中,選項:"default_line_ending": "system",

  表示,随系統的不同而變化,windows下就是CRLF,unix就是LF

2. 使用指令替換符号

  vim指令行狀态下輸入:

  :%s/[Ctrl-v][Enter]//g

  Ctrl-v的作用是,使得接着輸入的Enter鍵被認為是一個特殊字元,而不是vim指令的結束

3. 使用dos2unix指令

  如:dos2unix -k -n test.txt test.new.txt

            -k ,表示 保留該檔案原本的 mtime 時間格式(不更新檔案上次内容經過修訂的時間)

            -n ,表示 保留原本檔案,将轉換後的内容輸出到新檔案中

      注意:-k -n  不能連寫成 -kn ,否則執行不成功;

       當然還有相應的 unix2dos 指令,用于兩者的互相轉換

       具體 可通過 dos2unix --help檢視相關設定

繼續閱讀