linux文件最后一行沒(méi)有換行符 Linux上如何進(jìn)行換行符轉(zhuǎn)換?
Linux上如何進(jìn)行換行符轉(zhuǎn)換?在Linux中,文本文件用(0a)意思是回車(chē)換行,而Windows用(0d0a)意思是回車(chē)換行。所以在Linux中不使用Windows的文本文件老愛(ài)會(huì)再次出現(xiàn)錯(cuò)誤。為了
Linux上如何進(jìn)行換行符轉(zhuǎn)換?
在Linux中,文本文件用
(0a)意思是回車(chē)換行,而Windows用
(0d0a)意思是回車(chē)換行。所以在Linux中不使用Windows的文本文件老愛(ài)會(huì)再次出現(xiàn)錯(cuò)誤。為了盡量避免這種錯(cuò)誤,Linux能提供了兩種文本格式相互轉(zhuǎn)化的命令:dos2unix和unix2dos,dos2unix把
能量轉(zhuǎn)化成
,unixtodos把
轉(zhuǎn)變成
。
下命令dos2unix和unix2dos的使用更加很簡(jiǎn)單,格式為:dos2unixfilename
假如想更多的打聽(tīng)一下這兩個(gè)命令,可以欄里點(diǎn)手冊(cè):
mandos2unix
它會(huì)告訴你dos2unix的初級(jí)用法
(二)
Ubuntu下系統(tǒng)默認(rèn)還沒(méi)有安裝dos2unix工具,不過(guò)也沒(méi)有一個(gè)叫這個(gè)名字的工具(我在solaris里用過(guò)dos2unix,還不知道為么Ubuntu沒(méi)有)。只不過(guò)有一個(gè)松蠟工具——tofrodos,下面就說(shuō)再看看它的安裝和使用。
不過(guò)還是apt完全安裝啦。
(1)安裝tofrodos
sudoapt-getinstalltofrodos
事實(shí)上它完全安裝了兩個(gè)工具:todos(應(yīng)該是unix2dos),和fromdos(超過(guò)dos2unix)
安裝好完即可,現(xiàn)在你也可以進(jìn)行文本格式的轉(zhuǎn)換啦。
.例如:todosHello.txt(即unix2dosHello.txt)
fromdosHello.txt(即dos2unixHello.txt)
(2)做一些優(yōu)化
導(dǎo)致習(xí)慣了unix2dos和dos2unix的命令,可以不把上面完全安裝的兩個(gè)工具鏈接成unix2dos和dos2unix,也可以?xún)H僅是起個(gè)別名,并放在正常啟動(dòng)腳本里。
步驟:
以下是代碼片段:
ln-s/usr/bin/todos/usr/bin/unix2dos
ln-s/usr/bin/fromdos/usr/bin/dos2unix
或者在~里起個(gè)別名
vi~
再添加aliasunix2dostodosaliasdos2unixfromdos
(三)
另外要是要在目錄中源源不斷重命名,這個(gè)可以建議使用一加7xargs
.例如:
find./model-name*.sh|xargsfromdos
關(guān)于換行符CR和LF的區(qū)別?
#39
#39是回車(chē),前者使光標(biāo)到行首,(carriagereturn)#39
#39是換行,后者使光標(biāo)向上移動(dòng)一格,(linefeed)
是回車(chē),return
是換行,newline對(duì)于換行這個(gè)動(dòng)作,unix下像是只有一一個(gè)0x0A它表示換行(#34
#34),windows下好象也是0x0D和0x0A兩個(gè)字符(#34
#34),蘋(píng)果機(jī)(MAC OS系統(tǒng))則常規(guī)回車(chē)符CR來(lái)表示下一行(
)Unix系統(tǒng)里,每行結(jié)尾僅有“l(fā)t換行r26”,即“
”;Windows系統(tǒng)里面,每行結(jié)尾是“l(fā)t回車(chē)gtlt換行g(shù)t”,即“
”;Mac系統(tǒng)里,每行結(jié)尾是“l(fā)t回車(chē)dstrok”,即“
”。一個(gè)然后后果是,Unix/Mac系統(tǒng)下的文件在Windows里打開(kāi)的話(huà),所有文字會(huì)變的一行;而Windows里的文件在Unix下再打開(kāi)的話(huà),在每行的結(jié)尾會(huì)多車(chē)兩個(gè)^M字符。
Dos和windows需要回車(chē)換行CR/LF意思是下一行,即^M$($又不是換行符的來(lái)表示,換行符也沒(méi)表示進(jìn)去,$是文本結(jié)束了EOF的可以表示)而UNIX/Linux區(qū)分換行符LF意思是下一行,即
蘋(píng)果機(jī)(MAC OS系統(tǒng))則需要回車(chē)符CR表示下一行,即
CR用符號(hào)#39
#39可以表示,十進(jìn)制ASCII代碼是13,十六進(jìn)制代碼為0x0DLF可以使用#39
#39符號(hào)表示,ASCII代碼是10,十六制為0x0A.因此Windows平臺(tái)上換行符在文本文件中是使用0d0a兩個(gè)字節(jié)意思是,而UNIX和蘋(píng)果平臺(tái)上換行則是不使用0a或0d一個(gè)字節(jié)它表示.的原因dos風(fēng)格的換行在用
,把這樣的文件上傳到unix,有些版本的vi沒(méi)法識(shí)別
,因?yàn)関i不顯示時(shí)在行尾會(huì)又出現(xiàn)^M出,可是有些就能識(shí)別
,正常嗎總是顯示回車(chē)換行。多多分享本問(wèn)由科學(xué)教育分類(lèi)達(dá)人