dos2unix 命令详解

| 选择喜欢的代码风格  

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

dos2unix 命令安装:


-bash: dos2unix: command not found

#CentOS/RHEL 安装
yum install -y dos2unix

#Debian/Ubuntu 安装
sudo apt-get install tofrodos

#实际上它安装了两个工具:todos(相当于unix2dos),和fromdos(相当于dos2unix)
todos Hello.txt (即 unix2dos Hello.txt) 
fromdos Hello.txt (即 dos2unix Hello.txt)

-----------------------------------------
#Debian
apt-get install dos2unix

#Ubuntu
apt-get install dos2unix

#Alpine
apk add dos2unix

#Arch Linux
pacman -S dos2unix

#Kali Linux
apt-get install dos2unix

#CentOS
yum install dos2unix

#Fedora
dnf install dos2unix

#OS X
brew install dos2unix

#Raspbian
apt-get install dos2unix

#Docker
docker run cmd.cat/dos2unix dos2unix

dos2unix 命令补充说明:


在 DOS/Windows 文本文件中,换行符(也称为换行符)是两个字符的组合:回车符(CR - Carriage Return)后跟换行符(LF - LineFeed)。 在 Unix 文本文件中,换行符是单个字符:换行符(LF)。 在 Mac 文本文件中,在 macOS X 之前,换行符是单个回车符(CR)字符。 现在 macOS 使用 Unix 风格(LF)换行符。

除非强制转换,否则会自动跳过二进制文件。

将自动跳过非常规文件,例如目录和 FIFO。

默认情况下,符号链接及其目标保持不变。 可以选择替换符号链接,或者可以将输出写入符号链接目标。 不支持 Windows 上的符号链接。 Windows 符号链接始终被替换,保持目标不变。

Dos2unix 在 SunOS/Solaris 下以 dos2unix 建模,并具有类似的转换模式。

dos2unix 命令语法:


dos2unix [options] [FILE ...] [-n INFILE OUTFILE ...]

dos2unix 命令选项:


-k:保持输出文件的日期不变
-q:安静模式,不提示任何警告信息。
-V:查看版本
-c:转换模式,模式有:ASCII, 7bit, ISO, Mac, 默认是:ASCII。
-o:写入到源文件
-n:写入到新文件

dos2unix 命令参数:


参数:需要转换到文件。

dos2unix 命令实例


最简单的用法就是 dos2unix 直接跟上文件名:

dos2unix file

如果一次转换多个文件,把这些文件名直接跟在 dos2unix 之后。(注:也可以加上 -o 参数,也可以不加,效果一样):

dos2unix file1 file2 file3
dos2unix -o file1 file2 file3

dos2unix 上面在转换时,都会直接在原来的文件上修改,如果想把转换的结果保存在别的文件,而源文件不变,则可以使用 -n 参数

dos2unix -n in.txt out.txt

如果要保持文件时间戳不变,加上 -k 参数。所以上面几条命令都是可以加上 -k 参数来保持文件时间戳的:

dos2unix -k file
dos2unix -k file1 file2 file3
dos2unix -k -o file1 file2 file3
dos2unix -k -n oldfile newfile

从 Windows UTF-16(无BOM)转换为 Unix UTF-8:

iconv -f UTF-16 -t UTF-8 in.txt | dos2unix > out.txt

使用 BOM 从 Unix UTF-8 转换为 Windows UTF-8:

unix2dos -m -n in.txt out.txt

CentOS /bin/bash^M: bad interpreter 解决方法


如果这个脚本在 Windows 下编辑过,就有可能被转换成 Windows 下的 Dos 文本格式了,这样的格式每一行的末尾都是以 \r\n 来标识,它的 ASCII 码分别是 0x0D,0x0A。如果你将这个脚本文件直接放到 Linux 上执行就会报 /bin/bash^M: bad interpreter 错误提示。

解决办法 1:

:set ff?

#如果提示 fileformat=dos,则执行下面命令:
:set ff=unix

#保存退出
:wq

解决办法 2,直接用 dos2unix 命令即可:

$dos2unix [你的文件]

dos2unix 命令扩展阅读:




dos2unix 命令评论