将文件的换行符由 CRLF 转换为 LF
在 DOS/Windows 文本文件中,换行,也称为新行,是两个字符的组合:回车(CR)后跟一个换行(LF)。在 Unix 文本文件中,一行的换行是单个字符:换行(LF)。在 Mac 文本文件中,在 Mac OS X 之前,一行的换行是单个回车(CR)字符。现在的 Mac OS 使用 Unix 风格(LF)的换行。
在 Unix-like 系统上使用换行符为 CRLF 的文件可能会带来不便。
比如说,我将换行符为 CRLF 的 vim 配置文件用于我的 macOS 上的 vim,结果打开 vim 时会出现这样的错误提示:
Error detected while processing /Users/user/.vimrc[14]../Users/user/.vim/pack/themes/start/dracula_pro/colors/dracula_pro.vim:
line 2:
E492: Not an editor command: ^M
在这种情况下,错误的来源是 ^M 字符,这是一个回车符(Carriage Return, CR)。在 Windows 系统中,行尾标记通常为 CRLF(即 \r\n),而在 Unix 和 Linux 系统,包括 macOS 在内,行尾标记只有一个 LF(即 \n)。
因此,你需要将文件的换行符由 CRLF 转换为 LF。
解决方法
CRLF 转 LF
如果你需要转换的文件有很多,你可以借助 git 的自动转换换行符功能:
git init # 建立存储库
git config core.autocrlf input # 设置提交到存储库时转换为 LF
git add . && git commit -m "tmp" # 提交所有文件
git rm --cached -r . # 删除 git 中的缓存文件
git reset --hard # 重置项目文件
现在所有包含 CRLF 的文件都将被转换为 LF。
参考:Converting the End of Line Sequence from CRLF to LF in any of your project files | GitHub
使用
dos2unix工具:转换单个文件:
dos2unix <CRLF_file> # 将 `CRLF_file` 替换为你要转换的文件名
转换目录下的所有文件
find . -type f -print0 | xargs -0 dos2unix --
参考:How to apply dos2unix recursively to all the contents of a folder? | Stack Exchange
LF 转 CRLF
借助 git 转换整个项目内的文件
git init # 建立存储库
git config core.autocrlf true # 设置提交到存储库时转换为 LF,从存储库取回时转换为 CRLF
git add . && git commit -m "tmp" # 提交所有文件
git rm --cached -r . # 删除 git 中的缓存文件
git reset --hard # 重置项目文件
使用
unix2dos工具:转换单个文件:
unix2dos <CRLF_file> # 将 `CRLF_file` 替换为你要转换的文件名
转换目录下的所有文件
find . -type f -print0 | xargs -0 unix2dos --
附录:关于 autocrlf 配置的说明:
true:提交到存储库时使用 LF,检出时使用 CRLF;input:提交到存储库时使用 LF,检出时不转换(还是 LF);false:不进行任何转换(如果原来是 CRLF,那么提交到存储库时还是 CRLF,检出时也还是 CRLF)(并不是这样,在 macOS 上操作时效果感觉和 input 一样)
将文件的换行符由 CRLF 转换为 LF的更多相关文章
- 记一次错误排查,主要问题是跨平台文件中换行符(CRLF, LF)和垃圾字符( Caret Notation)
笔者测试SPEC14的workload的时候,需要自定义workload,又需要在Windows和Linux平台上都要测试,所以就遇到了这么个问题:测试工具报错,但是报出来的错误信息又跟错误对不上. ...
- Git 换行符检查 CRLF 与 LF
遇到的问题 在 git 提交或是签出时,提示如下问题: [git] warning: LF will be replaced by CRLF | fatal: CRLF would be replac ...
- Linux文件和windows文件在 换行符的区别
Linux或Unix文件,和windows文件,在来回处理时,如果不注意 换行符的区别,可能导致程序错误!!!深刻的教训.... 在早期的打印机时代,开始新的一行要占用两个字符的时间.如果到了一行的结 ...
- python处理文件的换行符
我们知道在Windows平台下的换行符是\r\n,而在linux下的换行符是\n.现在写一个简单程序来测试python是如何处理这些换行符的. 准备文件data.txt,该文件在Windows平台下编 ...
- ****使用ftp软件上传下载php文件时换行符丢失bug
在使用ftp软件上传下载php源文件时,我们偶尔会发现在本地windows下notepad++编辑器写好的php文件,在使用ftp上传到linux服务器后,php文件的换行符全部丢失了,导致php文件 ...
- python tips:文件读取——换行符的问题
问题:在windows系统中,换行的符号是'\r\n'.python在读文件的时候为了系统兼容,会默认把'\r','n','\r\n'都视作换行.但是在windows文件中,可能在同一行中同时存在'\ ...
- C语言中以文本方式读写文件时换行符转换的注意事项
我们知道在UNIX下是没有回车符(\r)的,只有换行符(\n),而C语言诞生于UNIX(Linux即面向开源的UNIX,Mac OS也是UNIX发展而来的,而Windows是从MS-DOS发展而来,与 ...
- windows下建立文件的换行符^M导致linux下的shell脚本执行错误的解决方式
常常在windows下编辑的文件远程传送到linux下的时候每行末尾都会出现^M.这将导致shell脚本执行错误,主要是由于dos下的编辑器和linux下的编辑器对文件末行的回车符处理不一致导致. 主 ...
- 修改windows文件的换行符
应用场景: 在办公中,有可能存在,某些命令脚本使用windows下的文本编辑器进行编写 当放到测试环境的Linux中时,运行报错 需要使用的软件:xxd hexdump dos2unix 1.运行w ...
- PHP按行读取文件 去掉换行符"\n"
第一种: $content=str_replace("\n","",$content); echo $content; 或者: $content=str_rep ...
随机推荐
- python基础-列表list [ ]
列表的定义和操作 列表的特性: 元素数量 支持多个 元素类型 任意 下标索引 支持 重复元素 支持 可修改性 支持 数据有序 是 使用场景 可修改.可重复的 一批数据记录场景 # 定义一个列表list ...
- 三屏异显案例分享,基于全国产RK3568J工业平台!
在工业领域中,能否更灵活.更高效地在主屏幕进行主要任务,并在其他副屏幕上进行其他次要任务(例如查看参考资料.监控其他应用程序),一直都是许多工业领域客户面临的刚需,而"多屏异显"功 ...
- T3/A40i支持Linux-5.10新内核啦,Docker、Qt、Python统统升级!
自2021年创龙科技推出全志国产化率100%的T3/A40i工业核心板后,不到两年时间已超过800家工业客户选择创龙科技T3/A40i平台.随着客户产品的不断升级与迭代,部分"能源电力&qu ...
- 坚果云与floccus实现Chrome书签国内跨设备、跨平台同步
本文介绍基于floccus插件与坚果云协同使用的方法,对浏览器的书签进行实时在线同步的操作. 在工作与学习中,我们时常希望在不同浏览器之间实现书签的同步:而一些传统的浏览器书签同步方案,或多或 ...
- Qt 学习笔记 - 第四章 - Qt的三驾马车之 - 网络编程
Qt 学习笔记全系列传送门: Qt 学习笔记 - 第一章 - 快速开始.信号与槽 Qt 学习笔记 - 第二章 - 添加图片.布局.界面切换 Qt 学习笔记 - 第三章 - Qt的三驾马车之一 - 串口 ...
- java springboot监听事件和处理事件
在Spring Boot中,监听和处理事件是一种常用的模式,用于在应用程序的不同部分之间传递信息.Spring 的事件发布/订阅模型允许我们创建自定义事件,并在这些事件发生时由注册的监听器进行处理.这 ...
- 存储系列DAS,SAN,NAS常见网络架构
随着主机.磁盘.网络等技术的发展,对于承载大量数据存储的服务器来说,服务器内置存储空间,或者说内置磁盘往往不足以满足存储需要.因此,在内置存储之外,服务器需要采用外置存储的方式扩展存储空间,今天在这里 ...
- Microsoft宣布将在开发人员会议上专注于.NET Aspire
2024年7月15日微软宣布,其开发执行团队将在下个月的开发者大会上聚焦于使用 .NET Aspire 的云原生开发,以及结合人工智能的"现代 SQL"在 Microsoft Fa ...
- Modbus转Profinet网关模块连PLC与流量计通讯案例
一.案例背景 在饮品加工厂中,会涉及到流量计的使用,然而达到对流量计的精准控制和数据采集需要用到PLC,由于PLC和流量计可能使用不同的通信协议(如Profinet和Modbus),造成两者不能自接进 ...
- 第八节 JMeter基础-高级登录【数据库数据驱动】
声明:本文所记录的仅本次操作学习到的知识点,其中商城IP错误,请自行更改. 背景:获取数据库用户表中的数据进行登录接口测试.思路: 引用jar包[测试计划]. 设置数据库的连接信息,取变量名db1-- ...