`
fireq3
  • 浏览: 38099 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

dos2unix命令

    博客分类:
  • unix
 
阅读更多

dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是 0A。DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾会显示^M,而且很多命令都无法很好的处理这种格式的文件,如果是个shell脚本,。而Unix格式的文本文件在Windows下用Notepad打开时会拼在一起显示。因此产生了两种格式文件相互转换的需求,对应的将UNIX格式文本文件转成成DOS格式的是unix2dos命令。

常用参数

将DOS格式文本文件转换成Unix格式,最简单的用法就是dos2unix直接跟上文件名。

格式:dos2unix file

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

格式:dos2unix file1 file2 file3

格式:dos2unix -o file1 file2 file3

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

格式:dos2unix oldfile newfile

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

格式:dos2unix -k file

格式:dos2unix -k file1 file2 file3

格式:dos2unix -k -o file1 file2 file3

格式:dos2unix -k -n oldfile newfile

注:unix2dos命令的使用方式与dos2unix命令的类似。

使用示例

示例一 DOS格式文本文件在Linux下的表现

现在有一个脚本文件job.sh,是在Linux下用vi编辑的。

[root@jfht ~]# cat job.sh
#!/bin/sh

date >job.txt

 

现在把它转换成DOS格式文本文件。
[root@jfht ~]# unix2dos job.sh
unix2dos: converting file job.sh to DOS format ...

尝试着运行一下。
[root@jfht ~]# ./job.sh
-bash: ./job.sh: 权限不够
[root@jfht ~]# chmod +x job.sh
[root@jfht ~]# ./job.sh
-bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录

DOS格式的脚本文件时无法解释执行的,因为脚本文件的第一行是用来指定解释器的,Linux系统认为解释器是/bin/sh^M,而不是/bin/sh。

我们来通过Linux下的一些命令来看一下DOS格式文件的真面目。
[root@jfht ~]# cat -v job.sh     <== cat -v可以看到文件中的非打印字符,而不带-v参数的cat命令不行。
#!/bin/sh^M
^M
date >job.txt^M
^M
[root@jfht ~]# hexdump -C job.sh       <== hexdump -C可以看到文件每个字节的十六进制表示。
00000000  23 21 2f 62 69 6e 2f 73  68 0d 0a 0d 0a 64 61 74  |#!/bin/sh....dat|
00000010  65 20 3e 6a 6f 62 2e 74  78 74 0d 0a 0d 0a         |e >job.txt....|
0000001e
[root@jfht ~]# vi job.sh     <== 使用vi打开时可以看到底下有[dos]的格式提示。有些版本vi显示的是行尾为^M。

#!/bin/sh

date >job.txt

~                                                                                                                                   
~              

"job.sh" [dos ] 4L, 30C

现在我们把DOS格式改回Unix格式的,看看效果。

root@jfht ~]# dos2unix job.sh
dos2unix: converting file job.sh to UNIX format ...
[root@jfht ~]# ./job.sh

可以执行了,不再报“-bash: ./job.sh: /bin/sh^M: bad interpreter: 没有那个文件或目录”这个错了。
[root@jfht ~]#

示例二 dos2unix -k和dos2unix -n的使用示例

[root@jfht ~]# cat <<EOF >1.txt
> 1
> 2

> 3
> EOF
[root@jfht ~]# file 1.txt
1.txt: ASCII text
[root@jfht ~]# ls -l 1.txt
-rw-r--r-- 1 root root 6 11-14 09:08 1.txt
[root@jfht ~]# date
2010年 11月 14日 星期日 09:28:42 CST
[root@jfht ~]# unix2dos -k 1.txt      <== 保持文件时间戳
unix2dos: converting file 1.txt to DOS format ...
[root@jfht ~]# ls -l 1.txt
-rw-r--r-- 1 root root 9 11-14 09:08 1.txt
[root@jfht ~]# dos2unix -n 1.txt 2.txt     <== 将1.txt转换到2.txt
dos2unix: converting file 1.txt to file 2.txt in UNIX format ...
[root@jfht ~]# ls -l 1.txt 2.txt
-rw-r--r-- 1 root root 9 11-14 09:08 1.txt
-rw-r--r-- 1 root root 6 11-14 09:30 2.txt
[root@jfht ~]# file 1.txt 2.txt
1.txt: ASCII text, with CRLF line terminators
2.txt: ASCII text
[root@jfht ~]# cat -v 1.txt
1^M
2^M
3^M
[root@jfht ~]# cat -v 2.txt
1
2
3
[root@jfht ~]#

分享到:
评论

相关推荐

    dos2unix.zip

    linux中没有dos2UNIX命令怎么解决办法,dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。...

    dos to unix

    **dos2unix命令详解:** 1. **安装dos2unix**: - 在Linux系统中,可以通过包管理器如`apt`(Ubuntu/Debian)、`yum`(CentOS/RHEL)或`dnf`(Fedora)来安装。 - 对于Windows用户,可以从提供的dos2unix-6.0.3-...

    dos2unix linux安装包

    1. **Ubuntu 安装**:在Ubuntu系统中,可以通过`apt-get`命令来安装dos2unix。首先更新软件包列表,然后执行安装命令: ``` sudo apt-get update sudo apt-get install dos2unix ``` 2. **其他Linux发行版**:...

    dos2unix安装包附安装说明书.zip

    7. 反向转换:如果需要将UNIX/Linux格式的文件转换回DOS/Windows格式,可以使用`unix2dos`命令,它是dos2unix工具的一部分。 8. 注意事项:转换前最好备份原文件,以防意外。同时,dos2unix不适用于二进制文件,只...

    使用python实现unix2dos和dos2unix命令的例子

    由于工作电脑网络限制无法安装unix2dos和dos2unix命令转换文件,自己实现一个 直接上代码,保存为python文件如unix2dos.py然后使用命令 unix2dos.py {unix2dos|dos2unix} {dirname|filename} #! /usr/bin/env ...

    dos2unix-6.0.3-4.el7.x86_64.rpm

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的

    dos2unix命令 将DOS格式的文本文件转换成UNIX格式

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志...

    dos2unix 安装软件包.zip

    安装完成后,用户就可以在命令行中直接使用`dos2unix`命令来转换文件了。例如,`dos2unix file.txt`会将`file.txt`从DOS/Windows格式转换为Unix/Linux格式。 总的来说,dos2unix是一个实用的工具,对于在Unix/Linux...

    dos2unix_6.0.3

    安装完成后,用户就可以通过命令行调用`dos2unix`命令来转换文件了,通常的用法是`dos2unix [options] input_file output_file`。 使用dos2unix的一个常见场景是在将DOS/Windows格式的脚本如bash、Perl或Python导入...

    dos2unix-6.0.3-7.el7.x86_64.rpm.7z

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式 最简单的用法就是dos2unix直接跟上文件名:dos2unix file -k:保持输出文件的日期不变 -q:安静模式,不提示任何警告信息。 -V:查看版本 -c:转换模式,模式有...

    [原创]unix2dos dos2unix 批量 windows升级版

    unix2dos批量转换工具(双向) MS桌面版 前一版描述较不祥细,以至于很同朋友不知道可以选择多个文件拖放,故在此多啰嗦几句。 注明:1、窗口支持拖放,单文件或多文件同时拖放均可 2、新版本添加文件列表窗口中点...

    dos2unix-6.0.3-7.el7.x86_64.rar

    安装完成后,我们就可以使用dos2unix命令来转换文件了。例如,要将一个名为`example.txt`的DOS格式文件转换为Unix格式,只需执行: ```bash dos2unix example.txt ``` DOS2UNIX的工作原理主要基于查找和替换。它...

    dos2unix和unix2dos

    在Windows系统中,将这两个工具的可执行文件(如压缩包内的dos2unix.exe和unix2dos.exe)放入System32目录后,用户可以通过命令提示符(cmd)直接调用它们。例如,如果你想要转换一个名为“example.txt”的文件,你...

    dos2unix-5.3-win32.zip

    3. **命令行使用**:在Windows下,用户可以通过命令提示符(CMD)或PowerShell调用dos2unix.exe,如`dos2unix file.txt`,这会将file.txt转换为Linux格式。命令行选项允许用户指定输出文件名、批量转换文件等。 4. ...

    dos2unix-7.4.1-win64-nls.zip

    在实际应用中,你可能需要以下命令来操作dos2unix: - `dos2unix file.txt`:将file.txt的换行符从CRLF转换为LF。 - `unix2dos file.txt`:将file.txt的换行符从LF转换为CRLF。 - `dos2unix -b *`:批量转换当前...

    DOS、UNIX 经典命令集锦

    以下是一些常见的UNIX命令: 1. **ls**:列出目录内容。 2. **cd**:更改当前工作目录。 3. **cp**:复制文件或目录。 4. **rm**:删除文件或目录。 5. **mv**:移动或重命名文件或目录。 6. **mkdir**:创建新目录...

    linux下dos转unix

    例如,在Ubuntu或Debian上,可以使用`sudo apt-get install dos2unix`命令;在CentOS或Fedora上,可以使用`sudo yum install dos2unix`或`sudo dnf install dos2unix`。 2. **使用dos2unix**:`dos2unix`的基本用法...

    windows下UNIX2DOS

    unix2dos 操作环境:Microsoft桌面操作系统/dos下操作 使用方法:拖放要转换的文本文件至输入窗口中,选择要转换的方式(DOS2UNIX或UNIX2DOS),点转换即可直接转换 注:支持命令提示符下参数操作 功能: unix...

    ubuntu系统x64 tofrodos deb安装包

    在跨平台中,windows换行符通常为\r\n, 而linux下则为\n,这就导致了在windows下编写的文件上传到linux中时,vim打开文件后,在行末总能看到^M这样的字样,解决这一问题的...然后unix2dos和dos2unix命令你就可以使用啦

Global site tag (gtag.js) - Google Analytics