dos2unix是将Windows格式文件转换为Unix、Linux格式的实用命令。Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n。
而unix2dos则是和dos2unix互为孪生的一个命令,它是将Linux&Unix格式文件转换为Windows格式文件的命令。
命令语法:
dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]
unix2dos [options] [-c convmode] [-o file ...] [-n infile outfile ...]
命令参数:
此命令参数是Red Hat Enterprise Linux Server release 5.7下dos2unix命令参数,不同版本Linux的dos2nnix命令参数有可能不同。
参数 |
描叙 |
-h |
显示命令dos2unix联机帮助信息。 |
-k |
保持文件时间戳不变 |
-q |
静默模式,不输出转换结果信息等 |
-V |
显示命令版本信息 |
-c |
转换模式 |
-o |
在源文件转换,默认参数 |
-n |
保留原本的旧档,将转换后的内容输出到新档案.默认都会直接在原来的文件上修改, |
使用示例:
在使用前要先安装dos2unix
yum install -y dos2unix
准备一个windows编写的文件
[root@aliyun ~]# cat windows #!/bin/bash date
准备一个linux编写的文件
[root@aliyun ~]# cat show.sh #!/bin/bash date
分别启动脚本
[root@aliyun ~]# sh show.sh Wed Nov 27 10:26:42 CST 2019 [root@aliyun ~]# sh windows date: invalid date ‘\r’
提示有一个无效的字符 '\r' 这是因为windows下的换行符是\n\r一起,而linux下的换行符只有\n
再比较两个文件的类型
[root@aliyun ~]# file show.sh show.sh: Bourne-Again shell script, ASCII text executable [root@aliyun ~]# file windows windows: Bourne-Again shell script, UTF-8 Unicode text executable, with CRLF line terminators
提示两个文件的字符集不同linux编写的文件字符集是ASCII,而windows的是UTF-8
现在使用dos2unix转换一下windows编写的文件
dos2unix -n windows win2unix dos2unix: converting file windows to file win2unix in Unix format ... [root@aliyun ~]# file windows windows: Bourne-Again shell script, UTF-8 Unicode text executable
可以看到的是那句 with CRLF line terminators 不见了,但是字符编码还是utf-8,那么文件的格式有没有变呢?
[root@aliyun ~]# sh win2unix Wed Nov 27 10:54:46 CST 2019
可以看到格式变了,能正常打印,但是字符集的问题,先留在这里