欢迎光临
专业Linux运维二十年

linux转换行尾符为Unix格式是什么-dos2unix 命令使用与实例

Linux dos2unix 命令


dos2unix 是一款用于将文本文件从 DOS/Windows 格式转换为 Unix/Linux 格式的。它主要用于解决由于不同换行符差异引起的问题。

主要功能

  • 将 Windows/DOS 风格的换行符(CRLF)转换为 Unix/Linux 风格的 LF 换行符
  • 可选地处理文件编码
  • 支持批量文件转换

为何需要 dos2unix

换行符的差异

不同系统采用不同的换行方式:

  • Windows/DOS:采用回车+换行(CRLF,
    rn

    登录后复制 )

  • Unix/Linux:仅用换行(LF,
    n

    登录后复制 )

  • 旧版 Mac OS:使用回车(CR,
    r

    登录后复制 )

问题表现

当在 Linux 系统中打开 Windows 创建的文本文件时:

  • 文件中可能出现
    ^M

    登录后复制 符号(vi 编辑器可见)

  • 脚本可能无法执行
  • 工具如 grep、awk 可能解析错误

安装 dos2unix

多数 Linux 发行版默认未预装 dos2unix,需手动安装:

Ubuntu/Debian

实例

sudo apt-get update
sudo apt-get install dos2unix

CentOS/RHEL

<pre class="brush:php;toolbar:false;">sudo yum install dos2unix

登录后复制

验证安装

<pre class="brush:php;toolbar:false;">dos2unix --version

登录后复制


基本用法

<pre class="brush:php;toolbar:false;">dos2unix [参数] 文件...

登录后复制

常见参数

参数 说明
`-k` 保持文件时间戳不变
`-f` 强制转换,跳过二进制检查
`-q` 静默模式,不输出警告
`-o` 覆盖原文件(默认操作)
`-n` 生成新文件,保留原文件
`-c` 转换编码(配合 `-e` 使用)
`-e` 指定目标编码(如 `-e utf8`)
`-b` 创建 `.bak` 备份文件

使用示例

1. 基础转换

<pre class="brush:php;toolbar:false;">dos2unix file.txt

登录后复制

直接修改 file.txt 内容

2. 不修改原文件

<pre class="brush:php;toolbar:false;">dos2unix -n file.txt newfile.txt

登录后复制

转换后结果写入 newfile.txt,原文件不变

将图片转换为吉卜力艺术风格的作品


86

3. 批量处理文件

<pre class="brush:php;toolbar:false;">dos2unix *.txt

登录后复制

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

4. 递归处理目录

<pre class="brush:php;toolbar:false;">find . -type f -name "*.sh" -exec dos2unix {} ;

登录后复制

转换当前目录及其子目录中的所有 .sh 文件

5. 保持文件时间戳

<pre class="brush:php;toolbar:false;">dos2unix -k script.py

登录后复制

转换脚本但不更改其时间属性


实际应用场景

1. 解决 Windows 传输脚本问题

实例

# 转换脚本
dos2unix backup_script.sh

# 添加执行权限
chmod +x backup_script.sh

# 运行脚本
./backup_script.sh

2. 统一团队共享配置

实例

# 转换整个配置目录
find /etc/myapp/conf.d/ -type f -exec dos2unix {} ;

3. 准备上传至 Linux 的文件

<pre class="brush:php;toolbar:false;">dos2unix -b *.php  # 转换并保留备份

登录后复制


注意事项

  1. 避免处理二进制文件:误用可能导致文件损坏
  2. 版本控制建议:Git 等系统应统一设置换行符规则
  3. 非 ASCII 字符支持:含特殊字符时需使用
    -c

    登录后复制 和

    -e

    登录后复制 参数

  4. 重要:推荐使用
    -b

    登录后复制 创建

    .bak

    登录后复制 文件


其他方法

若未安装 dos2unix,可用以下替代方案:

1. tr 命令

<pre class="brush:php;toolbar:false;">tr -d 'r'  unixfile.txt

登录后复制

2. sed 命令

<pre class="brush:php;toolbar:false;">sed -i 's/r$//' winfile.txt

登录后复制

3. vim 编辑器

实例

:set ff=unix
:wq

总结

dos2unix 是跨平台文本格式转换的必备工具,适用于:

  • 系统管理员维护服务器环境
  • 开发者多平台协作开发
  • 从 Windows 向 Linux 迁移脚本和配置文件

熟练掌握该命令可有效避免换行符引发的各种兼容性问题,提升工作效率。


脚本之家
赞(0) 打赏
未经允许不得转载:Linux老运维 » linux转换行尾符为Unix格式是什么-dos2unix 命令使用与实例

觉得文章有用就打赏一下文章作者

非常感谢你的打赏,我们将继续提供更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫