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 |
安装之后即可使用其包含的几个命令,如 dos2unix
、unix2dos
等。
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 |
执行上面的命令将得到类似这样的一行输出信息:
100 0 0 no_bom text 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 |