dos2unix 是一个用于将文本文件从DOS/MAC格式转换为Unix格式的工具。它主要处理换行符的转换:
大多数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 |
显示帮助信息 |
# 转换文件并覆盖原文件
dos2unix file.txt
# 转换并保留原文件时间戳
dos2unix -k file.txt
# 转换并创建新文件(原文件保留)
dos2unix -n file.txt newfile.txt
# 转换当前目录下所有.txt文件
dos2unix *.txt
# 转换多个指定文件
dos2unix file1.txt file2.sh file3.py
# 转换文件夹下所有文件(包括子目录)
find /path/to/dir -type f -name "*.sh" -exec dos2unix {} \;
# 将Unix格式转换为DOS格式
unix2dos file.sh
# 带选项的反向转换
unix2dos -k script.py
# 使用file命令检查文件格式
file script.sh
# 使用cat -v显示不可见字符
cat -v file.txt | head -5
# 使用od命令查看换行符
od -c file.txt | head -10
# 场景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,可以使用其他命令实现类似功能:
# 使用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