Linux dos2unix 命令详解

1. 命令简介

dos2unix 是一个用于将文本文件从 DOS 或 Mac 格式转换为 Unix 格式的命令行工具。它主要处理文本文件中的行结束符差异

核心功能:将 DOS(\r\n)或旧版 Mac(\r)格式的行结束符,转换为 Unix(\n)格式,保证脚本、配置文件在 Linux/Unix 环境正常解析、不报错。

2. 语法格式

基础简写语法:

bash

运行

dos2unix [选项] [文件 ...]

完整标准语法:

bash

运行

dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...]

3. 常用选项及说明

表格

选项长选项说明
-h--help显示帮助信息
-k--keepdate保留文件原始时间戳,不修改修改日期
-q--quiet安静模式,不输出任何警告与日志
-V--version显示命令版本信息
-c--convmode指定转换模式:ASCII / 7bit / ISO / Mac,默认 ASCII
-o--oldfile原地转换,直接覆盖源文件(默认行为),支持多个文件
-n--newfile另存转换:输入文件不变,输出为新文件,一次仅支持一对文件

重要说明:

  1. 直接写dos2unix 文件列表,等价于-o直接修改原文件
  2. -o-n互斥,不可同时使用。

4. 示例用法

4.1 转换单个文件(原地覆盖)

bash

运行

dos2unix script.sh

4.2 批量转换多个文件

bash

运行

dos2unix file1.txt file2.txt file3.txt # 等价写法 dos2unix -o file1.txt file2.txt file3.txt

4.3 保留原文件,生成新转换文件

安全转换,不破坏源文件:

bash

运行

dos2unix -n old_config.cfg new_config.cfg

4.4 转换并保持文件时间戳不变

bash

运行

dos2unix -k important.log

4.5 组合参数:静默转换 + 保留时间

bash

运行

dos2unix -k -q file1.py file2.py

4.6 递归转换目录所有文件

bash

运行

# 方式1 find . -type f -exec dos2unix {} \; # 方式2(大批量文件效率更高) find . -type f | xargs dos2unix

4.7 只转换指定后缀文件

bash

运行

dos2unix *.sh *.txt *.conf

4.8 管道标准输入输出转换

不落地文件,流式转换:

bash

运行

cat dos_file.txt | dos2unix > unix_file.txt

5. 注意事项

  1. 文件备份风险默认 /-o模式会直接覆盖源文件,重要文件建议先用-n另存或提前备份。

  2. 禁止处理二进制文件仅用于纯文本(sh、txt、conf、py)。不要对图片、PDF、压缩包、程序执行转换,会导致文件损坏。

  3. 兼容旧 Mac 换行符虽然名字叫 dos2unix,也可转换 Mac 换行\r

bash

运行

dos2unix -c mac filename
  1. 反向转换对应工具Unix 转 DOS 换行 → 使用unix2dos,参数用法完全一致。

  2. 脚本排错神器Linux 脚本报^M、语法莫名错误,99% 是 Windows 换行导致,执行 dos2unix 即可修复。

获取更多Linux学习资料请关注“阿成学长工具包”公众号,对话框中输入2647获取