linux 中用vi 命令查看文件,为什么文件中每一行的结尾会出现两个^M^M.这是怎么产生的,代表什么符号?

作者&投稿:爰胆 (若有异议请与网页底部的电邮联系)
linux 中用vi 命令查看文件,为什么文件中每一行的结尾会出现两个^M^M.这是怎么产生的,代表什么符号?~

windows创建的文件是
结束的, 而linux,mac这种unix类系统是
结束的。

所以unix的文本到windows会出现换行丢失(ultraedit这种软件可以正确识别); 而反过来就会出现^M的符号了

补充:
windows里用ultraedit,选16进制模式(hex mode)可以看到。linux里面,我就不熟悉了。

是不是编码问题,UTF8 GBK 二。手段删除,批量删除。

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