DOS2UNIX 安装与使用简介

目前很多脚本语言都能够跨平台:在 Windows 系统的计算机上开发调试,然后上传到远程的 Linux 计算机去执行的情况非常普遍。但是如果你只是简单地将 Windows 系统下编辑过的脚本拿到 Linux 系统执行,会遭遇奇怪的错误。这通常是由换行符编码的问题造成的:Windows、UNIX/Linux 和早期的 macOS 操作系统对换行符使用了各自的编码方案。

dos2unix 是一个开源免费的可执行程序包,支持多个平台,不仅可以将文本文件的换行符编码在 Windows、macOS 和 UNIX/Linux 操作系统之间进行转换,还能转换文件的编码方式。本文介绍该程序包的配置和使用过程。

安装

Windows 操作系统

对于 Windows 操作系统的用户,从 SourceForge 网站下载程序压缩文件,解压后即可看到 bin/ 文件夹内的可执行程序。打开 “命令提示符” 窗口,使用 cd 命令进入程序所在目录,键入程序名(如 dos2unix)即可运行相应的程序。

如果你希望在任何目录都能使用该程序,可以考虑将程序所在目录添加到系统的环境变量,或直接将软件包内的可执行文件移动至 “C:\Windows\System32” 文件夹内。

Linux 操作系统

对于 Linux 操作系统,dos2unix 程序已经被添加到系统的软件源内,可以直接从软件源进行安装。

Fedora、CentOS 等 Linux 发行版的安装命令为:

1
$ sudo yum install dos2unix

Debian、Ubuntu 等发行版的安装命令为:

1
$ sudo apt-get install dos2unix

安装之后即可使用其包含的几个命令,如 dos2unixunix2dos 等。

Node.js

使用 Node.js 的用户,还可以直接使用 Node.js 中的对应模块:

1
$ npm install dos2unix

遗憾的是,该模块不可以作为命令行程序直接使用,只能作为 Node.js 的编程模块。

程序使用

程序功能

Dos2unix 程序包由 4 个子程序组成,它们分别是:

  • dos2unix:将 MS-DOS 编码的文件转换为 UNIX/Linux 的格式;
  • mac2unix:将 macOS 系统编码文件转换为 UNIX/Linux 的格式;
  • unix2dos:将 UNIX/Linux 系统编码文件转换为 MS-DOS 的格式;
  • unix2mac:将 UNIX/Linux 系统编码文件转换为 macOS 的格式。

参数使用

由于该程序包 4 个子程序接收的输入参数是一致的,此处仅以 dos2unix 为例。它的参数输入方式为:

1
$ dos2unix [options] <files>

这里的 <files> 为待处理的文件列表,而 [options] 为可选的控制参数。其中可选参数非常多,这里只择其概要:

  • -o <files>:直接操作输入文件进行编码转换,此处的 -o 可以省略;
  • -n <input> <output>:转换输入文件,将操作结果输出至新的输出文件;
  • -i <files>:仅查看文件的格式信息,不对文件进行转换操作;
  • -f--force:强制转换二进制文件,默认为跳过二进制文件;
  • -k--keep-date:保持新文件的时间戳(修改时间)不变;
  • -b--keep-bom:保持 BOM 不变;
  • -m--add-bom:添加 BOM(在 unix2dos 中为默认项);
  • -r--remove-bom:移除 BOM(在 dos2unix 中为默认项);
  • -q--quiet:安静模式,转换时不输出提示,仅以返回值表示操作成败;
  • -v--verbose:“啰嗦”模式,输出详细的提示信息;用于 Debug;
  • -V--version:显示程序版本号;
  • -h--help:显示程序帮助信息。

使用示例

不对文件进行转换操作,仅查看文件 demo.txt 的编码方式,:

1
$ dos2unix -i demo.txt

执行上面的命令将得到类似这样的一行输出信息:

&nbsp; 100 &nbsp; 0 &nbsp; 0 &nbsp; no_bom &nbsp; text &nbsp; demo.txt

以上信息依次为:MS-DOS 方式的换行符个数、UNIX/Linux 方式的换行符个数、Mac OS 方式的换行符个数、BOM、文件类型和文件名。

直接操作原有文件,将 demo.txt 由 MS-DOS 编码模式转换到 UNIX/Linux 编码模式:

1
$ dos2unix demo.txt

以上命令等效于:

1
$ dos2unix -o demo.txt

以详细模式运行程序,将 dos.txt 由 MS-DOS 编码模式转换到 UNIX/Linux 编码模式,生成新的文件 unix.txt:

1
$ dos2unix -v -n dos.txt unix.txt

将采用 UNIX/Linux 编码方案的 unix.txt 转换为 MS-DOS 编码模式,并输出到 dos.txt,在转换时保持文件的时间戳不变:

1
$ unix2dos -k -n unix.txt dos.txt

如果你希望将 Dos2unix 程序包集成到程序中,并且不希望其显示输出信息,可以使用安静模式。即在运行是添加 -q 参数。在这种模式下,只要不是程序输入参数错误,返回值将总是 0。示例,为上一个命令应用安静模式:

1
$ unix2dos -k -q -n unix.txt dos.txt