操作系统:换行符区分

不同平台对换行符的制定不同

Windows,<回车换行>(carriage return AND line feed) “\n\r” CRLF
Unix,<换行>(carriage return) “\n” CR
Mac,“\r”

\r:回车,Carriage return,表示使光标下移一格。
\n:换行,英文是New line,表示使光标到行首。
\r\n:表示回车换行。

由于换行符的不同,在不同系统之间传递文件产生的问题

1,文本显示问题,windows 下的文件在linux 下会产生 ^M 符号,而 linux 下创建编辑的文件 在windows 下会显示成一行;(edit plus 等软件可以很好区分除外)
2,window 下写的shell脚本不能再linux下执行了(shell 解释器对用换行符作为一个命令的提交)
3,影响版本控制软件呢的检入检出,(git对于工作空间和版本库中换行符有转换控制)产生一些无用的文件差异(git diff),尤其在多人协作中,每个人设置的换行符模式不同。
3,有时产生莫名其妙的问题,如果找不到原因,应该怀疑下是不是换行符的问题;

不同平台换行符的转化

windows -> unix:用unix 平台的命令工具

1、cat a.txt | tr -d “^M” > b.txt
2、cat a.txt | sed ‘s/^M//g’
3、vim 中执行sed 命令替换 ( :^,$ s/^m//g ;or :s/\r//g; )
4、dos2unix 文件 (适用与对文件夹所有文件进行转化)

unix ->windows
在window 平台适用 UltraEdit 和 EditPlus 等工具的 可以设置换行模式进行自动转化。
再或者在unix 平台中使用命令。

1、cat a.txt | sed ‘s/\n/\r\n/g’
2、unix2dos 文件 (适用与对文件夹所有文件进行转化)

开发方面如何避免换行问题

1、IDE 设置

IDE 中像设置编码一样,强制在工程工作区间级别设置文件换行为 linux 风格。
1、有利与使用git少出错
2、有洁癖的想法是还能省\r 这一个字节的内容消耗

eclipse 设置

这里写图片描述

idea 设置

这里写图片描述

2、gitbash 设置

gitbash 中设置默认检入检出换行符为linux(\n)风格:(为了团队更好的协作)

开启自动换行

[a@b]$ git config --global core.autocrlf true

#签出时将换行符转换成CRLF,签入时转换回 LF。  git config --global core.autocrlf true   
#签出时不转换换行符,签入时转换回 LF            git config --global core.autocrlf input   
#签出签入均不转换                               git config --global core.autocrlf false

开启安全换行

[a@b]$ git config --global core.safecrlf true
   解释:
   如果你把换行符搞乱了,在一个文件中既包含windows风格的换行符也包含unix风格换行符,那么 safecrlf 就可以发挥作用了:
#拒绝提交包含混合换行符的文件     git config --global core.safecrlf true   
#允许提交包含混合换行符的文件     git config --global core.safecrlf false   
#提交包含混合换行符的文件时候给出警示 git config --global core.safecrlf warn
相关文章
相关标签/搜索