🔍

首页 › 使用教程 › 开发与效率

换行符教程:Windows CRLF、Unix LF、旧 Mac CR 的区别、常见问题和在线转换

发布于 · 阅读约 2 分钟 · 用到的工具:换行符转换(CRLF/LF)

一句话答案

Windows 文本文件的换行是 CRLF(\r\n 两个字符),Linux 和 macOS 是 LF(\n),很早期的 Mac 用 CR(\r)。用 Windows 编辑的 shell 脚本放到 Linux 上运行可能报错,转换成 LF 就好。在线工具可以统计文件里三种换行符的数量并转换后下载。

本文目录
  1. 三种换行符
  2. 换行符不一致的常见问题
  3. 在线检测和转换
  4. 在 Git 里统一换行符
  5. 常见问题

三种换行符

名称字符转义写法主要系统
CRLF回车 + 换行\r\nWindows
LF换行\nLinux、macOS、Android
CR回车\rMac OS 9 及更早

CR(Carriage Return)和 LF(Line Feed)来自打字机时代:回车把打印头移回行首,换行把纸向上推一行。

换行符不一致的常见问题

  1. shell 脚本报错:在 Windows 上编辑的 .sh 文件放到 Linux 运行,可能出现 $'\r': command not found 或 bad interpreter,因为每行末尾多了一个 \r;
  2. Git 显示整个文件都改了:不同成员的编辑器换行符设置不同,每一行都会显示为修改;
  3. 旧版记事本全挤在一行:旧版 Windows 记事本不识别 LF,Windows 10 1809 以后的记事本已经支持;
  4. CSV 导入多出空行:有些程序会把 \r 当成额外的内容。

在线检测和转换

  1. 选择文件:打开 换行符转换,选择或拖入文本文件。检测换行符要用原文件,复制粘贴时浏览器可能会统一换行符。
  2. 查看检测结果:下方统计 CRLF、LF、CR 各有多少个。
  3. 选择目标格式:在下拉框里选 LF(Unix/macOS)、CRLF(Windows)或 CR(Classic Mac)。
  4. 转换并下载:点“转换并下载”得到转换后的文件。
检测到 11 个 LF 换行,目标格式选 CRLF
检测到 11 个 LF 换行,目标格式选 CRLF
↩️ 换行符转换(CRLF/LF)
免费在线使用,文件和数据只在你的浏览器本地处理,无需注册。
打开工具 →

在 Git 里统一换行符

  • 在仓库根目录添加 .gitattributes,写入 * text=auto,再对脚本单独设置 *.sh text eol=lf;
  • Windows 上的 Git 可以设置 core.autocrlf true,提交时转成 LF、检出时转成 CRLF;macOS 和 Linux 一般设置为 input;
  • 编辑器(例如 VS Code)的右下角可以查看和切换当前文件的换行符。

文本里还有零宽空格等看不见的字符时,见 清除不可见字符。

常见问题

CRLF 和 LF 有什么区别?

CRLF 是回车加换行两个字符,Windows 使用;LF 只有换行一个字符,Linux 和 macOS 使用。

为什么 shell 脚本在 Linux 上报 \r 错误?

脚本是 CRLF 换行,每行末尾多了 \r,转换成 LF 即可。

转换会改变文件内容吗?

只改变换行符,文字内容不变。

文件会上传吗?

不会,检测和转换都在浏览器本地完成。