linux dos2unix命令

命令简介

dos2unix 是一个用于将文本文件从DOS/MAC格式转换为Unix格式的工具。它主要处理换行符的转换:

  • DOS/Windows格式: 使用 CR+LF (回车+换行, \r\n)
  • Unix/Linux格式: 使用 LF (换行, \n)
  • Mac格式: 使用 CR (回车, \r)

安装方法

大多数Linux发行版默认不安装该工具,需要手动安装:

# Ubuntu/Debian
sudo apt-get install dos2unix

# CentOS/RHEL/Fedora
sudo yum install dos2unix
# 或
sudo dnf install dos2unix

# Arch Linux
sudo pacman -S dos2unix

基本语法

dos2unix [选项] 文件1 [文件2 ...]
unix2dos [选项] 文件1 [文件2 ...]

dos2unix 将DOS格式转换为Unix格式,unix2dos 则是反向操作。

常用选项

选项 说明
-k, --keepdate 保持文件时间戳不变
-n, --newfile 新文件模式(保留原文件)
-o, --oldfile 覆盖原文件(默认)
-q, --quiet 静默模式,不显示警告
-V, --version 显示版本信息
-h, --help 显示帮助信息

使用示例

1. 转换单个文件

# 转换文件并覆盖原文件
dos2unix file.txt

# 转换并保留原文件时间戳
dos2unix -k file.txt

# 转换并创建新文件(原文件保留)
dos2unix -n file.txt newfile.txt

2. 批量转换多个文件

# 转换当前目录下所有.txt文件
dos2unix *.txt

# 转换多个指定文件
dos2unix file1.txt file2.sh file3.py

# 转换文件夹下所有文件(包括子目录)
find /path/to/dir -type f -name "*.sh" -exec dos2unix {} \;

3. 反向转换(Unix转DOS)

# 将Unix格式转换为DOS格式
unix2dos file.sh

# 带选项的反向转换
unix2dos -k script.py

4. 检查文件格式

# 使用file命令检查文件格式
file script.sh

# 使用cat -v显示不可见字符
cat -v file.txt | head -5

# 使用od命令查看换行符
od -c file.txt | head -10

5. 实际应用场景

# 场景1:Windows开发的脚本在Linux无法执行
# 转换前脚本无法执行,转换后正常
dos2unix myscript.sh
chmod +x myscript.sh
./myscript.sh

# 场景2:转换配置文件
dos2unix /etc/myapp/config.conf

# 场景3:批量处理项目文件
find /home/user/project -name "*.java" -exec dos2unix {} \;

注意事项

  • 转换前建议备份重要文件
  • 二进制文件不应使用dos2unix转换
  • 某些编辑器(如vim)可以自动检测和转换格式
  • Git等版本控制系统可能会自动处理换行符
  • Windows下的WSL环境通常不需要此转换

替代方法

如果没有安装dos2unix,可以使用其他命令实现类似功能:

# 使用sed命令转换
sed -i 's/\r$//' file.txt    # DOS转Unix
sed -i 's/$/\r/' file.txt    # Unix转DOS

# 使用tr命令转换
tr -d '\r' < dosfile.txt > unixfile.txt

# 使用awk命令转换
awk '{ sub(/\r$/, ""); print }' dos.txt > unix.txt