转自:
http://www./deercoder/archive/2012/07/07/182123.html 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的编码,因为这部分修改是没有意义的,所以需要批量转换。 |
|