【Linux】Linux中dos2unix 工具转换文件格式
Linux中dos2unix 工具转换文件格式
- 安装 dos2unix
- 使用 dos2unix
- 1.检查文件格式:
- 2.确认是Windows格式后,就可以用 dos2unix 转换它了。建议先备份原文件。
- 3.确保脚本有执行权限:
- 重新运行启动脚本
在Linux系统启动时看到的/etc/init.d/rcS: line 23: /etc/init.d/S99resize_rootfs: not found错误
从Windows传输到Linux的脚本文件行尾格式(Line Ending)不兼容导致无法执行脚本的问题。
因为Windows和Linux系统处理文本文件的行尾符号是不同的:
- Windows:使用回车符+换行符(CRLF,即 \r\n)
- Linux/Unix:只使用换行符(LF,即 \n)
\quad当你在Windows上编辑脚本后传到Linux,脚本文件的行尾可能保留着 \r\n。Linux系统无法正确识别这些Windows格式的行尾符号,就可能引发各种问题,比如遇到的“not found”错误(因为Linux会把 ^M(即 \r )也当作脚本名的一部分去查找)
dos2unix 就是一个用来将文本文件从DOS/Windows格式(CRLF)转换为Unix/Linux格式(LF)的小工具,可以解决这类问题。
安装 dos2unix
sudo apt update
sudo apt install dos2unix
使用 dos2unix
1.检查文件格式:
在转换前,可以用 file 或 cat -A 命令检查文件当前的格式。
file S99resize_rootfs
如果显示 with CRLF line terminators 或 DOS,说明是Windows格式。
cat -A S99resize_rootfs
如果行尾显示 ^M$,也说明是Windows格式(^M 就是 \r)。
2.确认是Windows格式后,就可以用 dos2unix 转换它了。建议先备份原文件。
cp /etc/init.d/S99resize_rootfs /etc/init.d/S99resize_rootfs.bak
dos2unix /etc/init.d/S97resize_rootfs
3.确保脚本有执行权限:
chmod +x /etc/init.d/S99resize_rootfs