Windows與Linux的換行符

爲何在Windows中編寫的shell腳本放置到Linux中就無法正常運行呢?罪魁禍首盡然是“換行符機制”。


Windows換行符^M$

Linux換行符$


大家可以通過cat -A [filename]的指令去看看自己文件。

Shell中,如果是經過在Windows中編輯的文件,那麼就會多出^M,那麼自然就沒有辦法正常執行了。

找到了原因,那麼我們是否需要vim -b [filename],然後一行一行得去刪除^M呢?答案當然是否定的,我們可以通過工具dos2unix來實現。(孿生兄弟unix2dos)


dos2unix [-kn] infile [outfile]

 -k --keepdate
              Keep the date stamp of output file same as input file.

-n --newfile infile outfile ...
              New file mode. Convert the infile and write output to outfile. File names must be given in pairs and wildcard names should NOT be used or
              you WILL lose your files.


示例1、 將文件infile從dos格式轉換成unix格式

dos2unix infile


示例2、將文件infile從dos格式轉換成unix格式,但是不改變文件時間戳

dos2unix -k infile


示例3、將文件infile從dos格式轉換成unix格式,寫入文件outfile,infile文件保留

dos2unix -n infile outfile


示例4、完成示例3功能,outfile與infile的時間戳保持一致

dos2unix -kn infile outfile




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章