Pages

Thursday, 5 April 2012

Windows下文本文件如何转化为Linux下的格式


windows下面的换行使用的是回车换行(\r\n),Linux下采用\n换行,而mac采用回车符\r换行,所以有时候 在3个系统下编辑的文本文件换到另外一个系统下的时候会出现问题。上次在windows下编辑了一下shell脚本文件,在Linux下没法运行,因为 Linux会把\n当做换行,\r就算成前面文件的内容,我运行脚本就会得到错误的提示/bin/sh^M: bad interpreter,这里应该就是把\r(^M)当成文件的内容了。
另外一点有趣的是,windows下的程序读取文本时,会自动把文件里德\r\n转换成\n,写入文本时,会自动把要写入的\n变成\r\n。
网上找了一些解决方案,整理一下。
对于单个的文件,直接用vim改就可以了,打开文件,:%s/^M//g,这里^M要用ctrl+v+m打出来,不能用shift+键盘上的数字6 键,如果不行就再执行一下:%s/^@//g,^@用ctrl+v+enter打出来的,或者也可以试一下set fileformat=unix。
或者可以使用一个叫dos2unix的软件进行更改,安装完执行dos2unix 文件名就可以了,需要说明一点的是,Ubuntu下面这个工具不叫这个名字,执行apt-cache search dos2unix找出来的是tofrodos,用法一样。

No comments:

Post a Comment