文档中CRLF和LF之间的转换

在 Windows 和 Linux 之间“反复横跳”的我,不可避免地遇到了换行符之间转换的问题。

到网上查了一下,方法有很多,在这里整理一下,顺便加深一下对一些基础功能的认识。

问题产生原因

在 Windows 中,换行符是 \r\n,而在 Unix 中,换行符是 \n。在 Mac 中则是 \r。有点佩服用多台电脑的大佬们了。在 Unix 中打开包含 \r 的文件,\r 会变成可视化字符 ^M。最大的问题其实不是单个文件的转换而是文件夹下的批量转换。

DOS 2 Unix

Windows

根据1,最简单的办法是用 git-windows 自带的 dos2unix.exe。

1
find . -type f -exec dos2unix {} \;

PS:好像

Unix

sed

命令 sed 有很多种玩法。根据2可以这样:

1
2
sed -i 's/^M$//g'
sed -i 's/\r$//g'

啊。。忽然懒得写了,先这样吧。

关于 git

在 git 中有一个自动转换换行符的功能,在文件 commit 的时候会自动转换换行符格式。详细内容可以参考 git 的文档。推荐配置为

1
git config --global core.autocrlf input

这样会在Windows系统上的签出文件中保留CRLF,会在Mac和Linux系统上,包括仓库中保留LF。

Unix 2 DOS

什么时候心情好了再补充~

结语

作为一名菜鸡,随着 WSL 版本的更新的确感觉它越来越好用了,Windows 或成为最好用的 Linux 发行版说不定哪一天就成为现实了呢,摊手。虽然个人并不希望有那一天啦。

备注

1. vscode如何替换所有文件的回车格式为LF呢?
2. 批量将目录下所有文件进行 dos/unix 格式转换
文章作者: 40m41h42t
文章链接: http://qrzbing.cn/2019/02/20/CRLF-to-LF/
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 QRZ's Blog