在 Linux 使用过程中,你是否遇到过这种问题:bash: script.sh: /bin/bash^M: bad interpreter: No such file or directory👉 这种“诡异问题”的罪魁祸首,往往是——换行符不一致一、问题的根源:Windows vs Linux 换行符
#!/bin/bashecho "Hello Linux"
二、dos2unix 是什么?
dos2unix 用于将 Windows 格式文件转换为 Linux 格式
三、dos2unix 基本用法
dos2unix: converting file script.sh to Unix format...四、安装 dos2unix
sudo apt install dos2unix
sudo yum install dos2unix
sudo dnf install dos2unix
五、查看文件是否为 DOS 格式
script.sh: ASCII text, with CRLF line terminators六、批量转换文件(实战)
find . -name "*.sh" -exec dos2unix {} \;
七、反向转换(unix2dos)
如果需要把 Linux 文件转回 Windows 格式,可以使用:八、不用 dos2unix 的替代方案
如果系统没有安装 dos2unix,也可以用其他方法:sed -i 's/\r$//' script.sh
tr -d'\r' < script.sh > new.sh
九、典型错误场景总结
十、小结
dos2unix 是一个小命令,但解决的是一个非常经典的问题:跨平台换行符不兼容
dos2unix 就是 Linux 中的“格式修复工具”,专治 ^M 疑难杂症。
file script.sh && dos2unix script.sh