分享

如何转换^M行末符号

 MikeDoc 2012-08-06
转自: 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的编码,因为这部分修改是没有意义的,所以需要批量转换。

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多