dos2unix将dos文件转换为unix格式

2013年2月19日 0 条评论 480 次阅读 0 人点赞

背景

ARM AT91SAM9263EK毕设项目终于做完了,同时也到了要告别大学生活最后一站的时候了,看着板子上闪烁的指示灯不免回忆起很多很多的事情。顺便清理下实验室的电脑方便留给师弟师妹用。编译和开发日志是通过脚本来清理:

Windows下编辑好的脚本在Fedora上执行会报错:

看着应该是包含了特殊字符导致的,通过cat -v clean.sh查看详细信息:

可以看到每行结尾都多了一个^M标识,查询后发现是Windows和Linux系统换行符不同引起的,Windows格式文件的换行符为“\r\n”,而Unix&Linux文件的换行符为“\n”。可以在Linux环境下重写一份也可以通过dos2unix工具将Windows下的脚本文件转换为Linux下可用的脚本文件。

dos2unix简介

dos2unix软件包包括工具dos2unix 和 unix2dos,用于将纯文本文件在DOS或Mac格式与Unix格式之间相互转换。dos2unix命令其实就是将文件中的“\r\n”转换为“\n”,unix2dos与dos2unix相反,它是将Linux和Unix格式文件转换为Windows格式文件。

DOS/Windows的文本文件中,断行符是由两个字符共同表示的:回车符(CR)和换行符(LF)。Unix的文本文件中,换行符则由单个换行符(LF)表示。而Mac的文本文件则由单个回车符(CR,用于Mac OS X之前的系统)或单个换行符(LF,用于当下的新Mac OS)表示。除了断行符,Dos2unix还可以转换文件编码。一些DOS编码页可以被转换为Unix Latin-1,Windows Unicode(UTF-16)文件也可以被转换为Unix Unicode(UTF-8)文件。其中有几个注意事项:

  1. 二进制文件则会被自动跳过,除非指定了强制转换选项;
  2. 特殊文件,如目录和队列,会被自动跳过;
  3. 符号链接和其所指向的目标默认不会被转换,可以用选项来指定替换符号链接或者将输出写入到链接目标,需要注意的是Windows下不支持写入到符号链接的目标。

dos2unix由SunOS/Solaris下的版本改写而成。这两个版本间有一个重大差异:本版本默认进行原位转换(旧文件模式),而原来SunOS/Solaris下的版本只支持配对转换(新文件模式),参见选项 -o 和 -n。还有一个区别是SunOS/Solaris下的版本默认使用 iso 模式,而本版本默认使用 ascii 模式。

安装dos2unix

Fedora直接使用yum命令安装即可完成安装:

dos2unix转换文件

安装完成后直接执行转换命令即可将文件中的“\r\n”转换为“\n”:

参考文档

https://sourceforge.net/projects/dos2unix/

https://waterlan.home.xs4all.nl/dos2unix/zh_CN/man1/dos2unix.htm

勇敢,和生活的艰难无关。

文章评论(0)