windows创建的文件是 \n\r结束的, 而linux,mac这种unix类系统是\n结束的。
所以unix的文本到windows会出现换行丢失(ultraedit这种软件可以正确识别); 而反过来就会出现^M的符号了
补充:
windows里用ultraedit,选16进制模式(hex mode)可以看到。linux里面,我就不熟悉了。
建议查看一下刘遄老师的《linux就该这么学》
Dos、Windows 格式的文件,用 0D 0A (CR+LF)作为换行符,而Unix 的则是以0A(LF) 作为换行符,所以dos 底下的文本文件到了unix的话,换行符就会多出来一个 0D(CR) 显示为 ^M
文件的编码格式不一样在成的,一般来说会影响使用。常规方法是使用dos2unix命令,懒的方法是逐个把这些字符去掉,在vi里每行行尾按x