linux文件最后一行没有换行符 Linux上如何进行换行符转换?
Linux上如何进行换行符转换?
在Linux中,文本文件用
(0a)意思是回车换行,而Windows用
(0d0a)意思是回车换行。所以在Linux中不使用Windows的文本文件老爱会再次出现错误。为了尽量避免这种错误,Linux能提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把
能量转化成
,unixtodos把
转变成
。
下命令dos2unix和unix2dos的使用更加很简单,格式为:dos2unixfilename
假如想更多的打听一下这两个命令,可以栏里点手册:
mandos2unix
它会告诉你dos2unix的初级用法
(二)
Ubuntu下系统默认还没有安装dos2unix工具,不过也没有一个叫这个名字的工具(我在solaris里用过dos2unix,还不知道为么Ubuntu没有)。只不过有一个松蜡工具——tofrodos,下面就说再看看它的安装和使用。
不过还是apt完全安装啦。
(1)安装tofrodos
sudoapt-getinstalltofrodos
事实上它完全安装了两个工具:todos(应该是unix2dos),和fromdos(超过dos2unix)
安装好完即可,现在你也可以进行文本格式的转换啦。
.例如:todosHello.txt(即unix2dosHello.txt)
fromdosHello.txt(即dos2unixHello.txt)
(2)做一些优化
导致习惯了unix2dos和dos2unix的命令,可以不把上面完全安装的两个工具链接成unix2dos和dos2unix,也可以仅仅是起个别名,并放在正常启动脚本里。
步骤:
以下是代码片段:
ln-s/usr/bin/todos/usr/bin/unix2dos
ln-s/usr/bin/fromdos/usr/bin/dos2unix
或者在~里起个别名
vi~
再添加aliasunix2dostodosaliasdos2unixfromdos
(三)
另外要是要在目录中源源不断重命名,这个可以建议使用一加7xargs
.例如:
find./model-name*.sh|xargsfromdos
关于换行符CR和LF的区别?
#39
#39是回车,前者使光标到行首,(carriagereturn)#39
#39是换行,后者使光标向上移动一格,(linefeed)
是回车,return
是换行,newline对于换行这个动作,unix下像是只有一一个0x0A它表示换行(#34
#34),windows下好象也是0x0D和0x0A两个字符(#34
#34),苹果机(MAC OS系统)则常规回车符CR来表示下一行(
)Unix系统里,每行结尾仅有“lt换行r26”,即“
”;Windows系统里面,每行结尾是“lt回车gtlt换行gt”,即“
”;Mac系统里,每行结尾是“lt回车dstrok”,即“
”。一个然后后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变的一行;而Windows里的文件在Unix下再打开的话,在每行的结尾会多车两个^M字符。
Dos和windows需要回车换行CR/LF意思是下一行,即^M$($又不是换行符的来表示,换行符也没表示进去,$是文本结束了EOF的可以表示)而UNIX/Linux区分换行符LF意思是下一行,即
苹果机(MAC OS系统)则需要回车符CR表示下一行,即
CR用符号#39
#39可以表示,十进制ASCII代码是13,十六进制代码为0x0DLF可以使用#39
#39符号表示,ASCII代码是10,十六制为0x0A.因此Windows平台上换行符在文本文件中是使用0d0a两个字节意思是,而UNIX和苹果平台上换行则是不使用0a或0d一个字节它表示.的原因dos风格的换行在用
,把这样的文件上传到unix,有些版本的vi没法识别
,因为vi不显示时在行尾会又出现^M出,可是有些就能识别
,正常吗总是显示回车换行。多多分享本问由科学教育分类达人
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。