windows和linux下的換行符是不同的。一般操作系統(tǒng)上的運(yùn)行庫會自動決定文本文件的換行格式. 如一個程序在windows上運(yùn)行就生成CR/LF換行格式的文本文件,而在linux上運(yùn)行就生成LF格式換行的文本文件. 在一個平臺上使用另一種換行符的文件文件可能會帶來意想不到的問題, 特別是在編輯程序代碼時. 有時候代碼在編輯器中顯示正常, 但在編輯時卻會因為換行符問題而出錯. 很多文本/代碼編輯器帶有換行符轉(zhuǎn)換功能, 使用這個功能可以將文本文件中的換行符在不同格式單互換.
在不同平臺間使用FTP軟件傳送文件時, 在ascii文本模式傳輸模式下, 一些FTP客戶端程序會自動對換行格式進(jìn)行轉(zhuǎn)換. 經(jīng)過這種傳輸?shù)奈募止?jié)數(shù)可能會發(fā)生變化. 如果你不想ftp修改原文件, 可以使用bin模式(二進(jìn)制模式)傳輸文本.
解決:在linux下用dos2unix filename轉(zhuǎn)換一次之后,成功解決問題。
dos2unix命令用來將DOS格式的文本文件轉(zhuǎn)換成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作為斷行標(biāo)志的,表示成十六進(jìn)制就是0D 0A。而Unix下的文本文件是以\n作為斷行標(biāo)志的,表示成十六進(jìn)制就是 0A。DOS格式的文本文件在Linux底下,用較低版本的vi打開時行尾會顯示^M,而且很多命令都無法很好的處理這種格式的文件,如果是個shell 腳本,。而Unix格式的文本文件在Windows下用Notepad打開時會拼在一起顯示。因此產(chǎn)生了兩種格式文件相互轉(zhuǎn)換的需求,對應(yīng)的將UNIX格 式文本文件轉(zhuǎn)成成DOS格式的是unix2dos命令。
常用參數(shù):
將DOS格式文本文件轉(zhuǎn)換成Unix格式,最簡單的用法就是dos2unix直接跟上文件名。
格式:dos2unix file
如果一次轉(zhuǎn)換多個文件,把這些文件名直接跟在dos2unix之后。(注:也可以加上-o參數(shù),也可以不加,效果一樣)
格式:dos2unix file1 file2 file3
格式:dos2unix -o file1 file2 file3
上面在轉(zhuǎn)換時,都會直接在原來的文件上修改,如果想把轉(zhuǎn)換的結(jié)果保存在別的文件,而源文件不變,則可以使用-n參數(shù)。
格式:dos2unix oldfile newfile
如果要保持文件時間戳不變,加上-k參數(shù)。所以上面幾條命令都是可以加上-k參數(shù)來保持文件時間戳的。
格式:dos2unix -k file
格式:dos2unix -k file1 file2 file3
格式:dos2unix -k -o file1 file2 file3
格式:dos2unix -k -n oldfile newfile
注:unix2dos命令的使用方式與dos2unix命令的類似。
cat -v可以看到文件中的非打印字符,而不帶-v參數(shù)的cat命令不行。
hexdump -C可以看到文件每個字節(jié)的十六進(jìn)制表示。