CRLF和 LF的区别及转换

1.什么是CRLF和LF

CRLF 是 carriage return line feed 的缩写;中文意思是 回车换行。

LF 是 line feed 的缩写,中文意思是换行。

2,为什么要探究CRLF和LF

在学习git软件,安装git到configuring the lien ending conversion时,有三个选项。

  • Checkout Windows-style,commit Unix-style line endings.
  • Checkout as-is,commit Unix-style line endings.
  • Checkout as-is,commit as-is line endings.

这里面讲到了做两个操作(Checkout,Commit)的三种处理line endings的操作(Windows-style,Unix-style,As-is)。

为什么会出现这三种处理line endings(行尾结束符)呢?在Git的帮助页面给出了很好的解释。

Reference
From:https://help.github.com/articles/dealing-with-line-endings If
you’re using Git to collaborate with others on GitHub, ensure that Git
isproperly configured to handle line endings.

Every time you press return on your keyboard you’re actuallyinserting
an invisible character called a line ending . Historically,
differentoperating systems have handled line endings differently.

When you view changes in a file, Git handles line endings in its own
way.Since you’re collaborating on projects with Git and GitHub, Git
mightproduce unexpected results if, for example, you’re working on a
Windows machine,and your collaborator has made a change in OS X.

意思很好理解,就不翻译了。重视由于历史的原因,各种不同的操作系统在处理行尾结束符采取了不同的处理方法。

3、三种方式处理的不同

  • CRLF->Windows-style
  • LF->Unix Style
  • CR->Mac Style

CRLF表示句尾使用回车换行两个字符(即我们常在Windows编程时使用”\r\n”换行)

LF表示表示句尾,只使用换行.

4、在Git中如何转换?

在Git通过下面的命令配置:

$git config --global core.autocrlf true
# Configure Git on Windows to properly handle line endings

解释:core.autocrlf是git中负责处理line endings的变量,可以设置三个值– true , inout , false.
设置成三个值会有什么效果呢?

If core.autocrlf is set to true, that means that any time you add a
file to the git repo that git thinks is a text file, it will turn all
CRLF line endings to just LF before it stores it in the commit.。

设置为true,添加文件到git仓库时,git将其视为文本文件。他将把crlf变成lf。

If core.autocrlf is set to false, no line-ending conversion is ever
performed, so text files are checked in as-is. This usually works
ok。

设置为false时,line-endings将不做转换操作。文本文件保持原来的样子。

设置为input时,添加文件git仓库石,git把crlf编程lf。当有人Check代码时还是lf方式。因此在window操作系统下,不要使用这个设置。

Yet another way to show how autocrlf works

  1. true: x -> LF -> CRLF
  2. input: x -> LF -> LF
  3. false: x -> x -> x
    where x is either CRLF (windows-style) or LF (unix-style) and arrows stand for

file to commit -> repository -> checked out file

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Windows和Unix是两种不同的操作系统,它们在文本文件中使用的换行符也不同。Windows使用回车符和换行符(CRLF)作为换行符,而Unix使用换行符(LF)作为换行符。 在转换Windows和Unix文本文件时,需要将CRLF转换LF或将LF转换CRLF。可以使用文本编辑器或命令行工具来进行转换。 在文本编辑器中,可以使用“查找和替换”功能来进行转换。将“\r\n”替换为“\n”即可将CRLF转换LF,将“\n”替换为“\r\n”即可将LF转换CRLF。 在命令行中,可以使用“dos2unix”和“unix2dos”命令来进行转换。使用“dos2unix”命令将CRLF转换LF,使用“unix2dos”命令将LF转换CRLF。例如,将Windows文本文件转换为Unix文本文件,可以使用以下命令: dos2unix file.txt 将Unix文本文件转换为Windows文本文件,可以使用以下命令: unix2dos file.txt ### 回答2: 在计算机操作系统中,Windows和Unix是两种广泛使用的操作系统。在这两种操作系统中,文本文件的换行格式不同:Windows使用CRLF(回车符+换行符)作为换行符,而Unix使用LF(换行符)作为换行符。 因为操作系统的差异,两种换行符的使用会产生兼容性问题。当在Windows系统下编辑文本文件,保存时默认会使用CRLF换行符,但在Unix系统下打开该文件时会将CRLF视为两个字符,即CR和LF,从而影响文本的排版和格式。 为了解决这个问题,需要将文本文件的换行符从Windows格式转换为Unix格式,或者将Unix格式转换为Windows格式。常用的工具有以下几种: 1. DOS2UNIX和UNIX2DOS:这是两个Unix下的命令行工具,用于将文本文件从Windows格式转换为Unix格式或将Unix格式转换为Windows格式。使用方法如下: - 将Windows格式的文件转换为Unix格式:dos2unix filename.txt - 将Unix格式的文件转换为Windows 格式:unix2dos filename.txt 2. Notepad++:这是一款文本编辑器,支持Windows和Unix格式的文本文件,可以通过菜单 “Edit”-> “EOL Conversion” 来将换行格式转换为Windows或Unix格式。 3. Sublime Text:也是一款文本编辑器,支持Windows和Unix格式的文本文件,可以在菜单 "View"-> "Line Endings" 中设置将换行符转换为Windows或Unix格式。 需要注意的是,如果文件较多,可以使用批量转换命令将每个文件的换行符都转换为需要的格式。另外,在Git等版本控制工具中,也可以设置换行符的处理方式,以避免由此产生的兼容性问题。 ### 回答3: 在Windows和Unix系统中,行结束符的表示方式不同,Windows使用的是CRLF(回车符+换行符),而Unix使用的是LF(换行符)。 当我们在Windows系统中编写文件时,每一行的结尾都会自动添加CRLF,但是在Unix系统中,如果我们将这个文件复制到Unix系统中,就会出现问题,因为Unix系统只能识别LF作为行结束符。 为了解决这个问题,我们可以通过转换文件的行结束符来实现不同系统间的文件共享。下面列举几种常见的方式: 1. 使用文本编辑器转换。许多文本编辑器都提供了转换行结束符的选项,可以使用这个选项来将CRLF转换LF或反之亦然。比如在Atom编辑器中,可以通过在底部栏中选择CRLFLF转换。 2. 使用命令行工具转换。在Unix系统中,可以使用sed命令来将CRLF转换LF,命令格式为: sed 's/\r$//' file.txt > newfile.txt 其中,\r为回车符,$表示行末。将源文件file.txt中的每一行行末的\r替换为空字符,然后将结果输出到新文件newfile.txt中。 在Windows系统中,可以使用PowerShell的Get-Content和Set-Content命令来转换行结束符,命令格式为: (Get-Content file.txt) -replace "`r`n", "`n" | Set-Content newfile.txt 其中,`r和`n分别表示回车符和换行符。先读取源文件file.txt,再通过-replace替换每行行末的\r\n为\n,最后将结果输出到新文件newfile.txt中。 3. 使用软件批量转换。有些软件可以批量转换文件的行结束符,比如Notepad++和WinMerge等。在Notepad++中,可以使用Edit->EOL Conversion菜单来转换,而在WinMerge中,可以使用Edit->Convert Line Endings菜单来转换。 总之,通过将行结束符进行转换,可以实现不同操作系统间的文件共享和兼容,提高文件的可移植性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值