当前位置:首页>Linux>Linux基础 | dos2unix 命令使用指南:彻底解决换行符导致的“诡异错误”

Linux基础 | dos2unix 命令使用指南:彻底解决换行符导致的“诡异错误”

  • 2026-10-06 02:10:50
Linux基础 | dos2unix 命令使用指南:彻底解决换行符导致的“诡异错误”
在 Linux 使用过程中,你是否遇到过这种问题:
bash script.sh
结果报错:
bash: script.sh: /bin/bash^M: bad interpreter: No such file or directory
或者:
command not found
但文件明明是存在的!
👉 这种“诡异问题”的罪魁祸首,往往是——换行符不一致
而解决它的神器就是:dos2unix

一、问题的根源:Windows vs Linux 换行符

不同系统的换行方式不同:
系统
换行符
Windows
\r\n
(CRLF)
Linux
\n
(LF)
当你在 Windows 写了一个脚本:
#!/bin/bashecho "Hello Linux"
然后上传到 Linux 执行,就可能报错:
^M
👉 这个 ^M 就是\r(回车符)

二、dos2unix 是什么?

一句话理解:

dos2unix 用于将 Windows 格式文件转换为 Linux 格式

也就是:
CRLF → LF

三、dos2unix 基本用法

最简单的用法:
dos2unix 文件名
示例:
dos2unix script.sh
输出:
dos2unix: converting file script.sh to Unix format...
转换完成后,再执行:
bash script.sh
就不会再报错了。

四、安装 dos2unix

有些系统默认没有安装,需要手动安装。
Ubuntu / Debian:
sudo apt install dos2unix
CentOS / RHEL:
sudo yum install dos2unix
Rocky / AlmaLinux:
sudo dnf install dos2unix

五、查看文件是否为 DOS 格式

可以用 file 命令检测:
file script.sh
输出:
script.sh: ASCII text, with CRLF line terminators
说明:
👉 文件是 Windows 格式
转换后:ASCII text

六、批量转换文件(实战)

如果有很多脚本需要转换,可以批量处理:
dos2unix *.sh
或者结合 find:
find . -name "*.sh" -exec dos2unix {} \;
👉 一次性处理所有脚本文件

七、反向转换(unix2dos)

如果需要把 Linux 文件转回 Windows 格式,可以使用:
unix2dos file.txt
应用场景:
提交给 Windows 用户
导入 Excel 或某些工具

八、不用 dos2unix 的替代方案

如果系统没有安装 dos2unix,也可以用其他方法:
方法1:使用 sed
sed -i 's/\r$//' script.sh
方法2:使用 tr
tr -d'\r' < script.sh > new.sh
但相比之下:
👉dos2unix 更简单、更安全

九、典型错误场景总结

以下问题 90% 都和换行符有关:
❌ ^M 错误
❌ shell 脚本无法执行
❌ 配置文件解析失败
❌ Docker 容器启动失败
❌ CI/CD 脚本报错
👉 第一反应:dos2unix 文件名

十、小结

dos2unix 是一个小命令,但解决的是一个非常经典的问题:

跨平台换行符不兼容

一句话总结:

dos2unix 就是 Linux 中的“格式修复工具”,专治 ^M 疑难杂症。

📌 最后给你一个运维常用组合技:
file script.sh && dos2unix script.sh
👉 先检测,再修复,一步到位

最新文章

随机文章