随笔-145  评论-173  文章-70  trackbacks-0
Windows和Linux下面对于行末符的表示不同,Windows下面是\r\n,而Linux则是\n
因此,如果在Windows下面编辑的脚本文件,如shell脚本文件,在Linux下面执行失败,会提示多一个^M符号,用VIM打开也会发现增加这个符号。

解决办法:
1. 用VIM打开,设置编码为unix
:set fileformat=unix
然后,保存,结尾unix格式。

2. 使用VIM的替换功能,替换行末的\r符号即可
:%s/^M//g

3. 使用sed来进行批量处理
 sed ’s/^M//’ filename > tmp_filename

4. 批量处理(推荐使用)
sudo apt-get install dos2unix
find . * | xargs dos2unix (对当前目录下面的所有文件执行转换格式的命令)

一个需要注意的点:dos2unix需要root权限,我开始的时候没有用sudo运行,提示转换失败,后来利用sudo执行即可。
问题的根源来源于:
在Windows下面拉取Git上面的代码,结果给版本库所有的文件都加上了行末符号,而在Linux下面再次编辑该文件就发现所有的问题都出现问题,提交的时候又不能
把所有的文件都提交成Windows的编码,因为这部分修改是没有意义的,所以需要批量转换。


posted on 2012-07-07 22:54 deercoder 阅读(2096) 评论(0)  编辑 收藏 引用 所属分类: Unix/LinuxShell/Bash

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理