Linux命令之dos2unix

Linux命令之dos2unix

(2011-09-22 11:24:06)

转载▼

标签:

杂谈

 

Linux命令之dos2unix - 将DOS格式文本文件转换成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编辑的。

[[email protected] ~]# cat job.sh
#!/bin/sh

date >job.txt

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

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

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

我们来通过Linux下的一些命令来看一下DOS格式文件的真面目。
[[email protected] ~]# cat -v job.sh     <== cat -v可以看到文件中的非打印字符,而不带-v参数的cat命令不行。
#!/bin/sh^M
^M
date >job.txt^M
^M
[[email protected] ~]# 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
[[email protected] ~]# vi job.sh     <== 使用vi打开时可以看到底下有[dos]的格式提示。有些版本vi显示的是行尾为^M。

#!/bin/sh

date >job.txt

~                                                                                                                                   
~

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

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

[email protected] ~]# dos2unix job.sh
dos2unix: converting file job.sh to UNIX format ...
[[email protected] ~]# ./job.sh

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

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

[[email protected] ~]# cat <<EOF >1.txt
> 1
> 2

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

时间: 2024-09-27 08:59:26

Linux命令之dos2unix的相关文章

linux学习积累(一) Linux命令之dos2unix

问题描述: 昨天运行一个脚本的时候出现报错情况, 解决过程: 问了前辈得知是在Windows下编辑的脚本,需要进行文件转换才能运行,并告诉我使用dos2unix命令进行转换. 通过网络查询得到如下的知识,积累下来. 1.Windows下编辑的shell脚本无法在linux下运行的原因: DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A.而Unix下的文本文件是以\n作为断行标志的,表示成十六进制就是 0A.DOS格式的文本文件在Linux底下,用较低版本的vi打开时行尾

Linux命令之dos2unix - 将DOS格式文本文件转换成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下用Not

linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法

linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法 http://blog.csdn.net/w616589292/article/details/38274475 dos2unix命令找不到怎么办 https://zhidao.baidu.com/question/1860968406611919387.html linux中没有dos2UNIX或者UNIX2dos命令怎么解决办法 http://blog.csdn.net/w616589292/article/details

(转)Linux命令学习总结:dos2unix - unix2dos

Linux命令学习总结:dos2unix - unix2dos 命令简介: 原文:http://www.cnblogs.com/kerrycode/p/5077969.html dos2unix是将Windows格式文件转换为Unix.Linux格式的实用命令.Windows格式文件的换行符为\r\n ,而Unix&Linux文件的换行符为\n. dos2unix命令其实就是将文件中的\r\n 转换为\n. 而unix2dos则是和dos2unix互为孪生的一个命令,它是将Linux&Un

十年linux命令总结

十年linux命令总结 本文链接: http://codingstandards.iteye.com/blog/786653 关于命令类型划分 本表中列出了我穷尽了我所有的记忆整理出来的Linux命令,其中关于外部命令.关键字或内建命令的划分,不一定正确.有很多命令,既是内建命令也 可能是外部命令,为啥?Bash为了更高效率的执行命令和脚本,把很多外部命令以内建命令的方式实现了.我们使用type这个命令就可以知道一个命令的类 型了,如下所示: [[email protected] ~]# typ

Linux命令学习Day1

一直想学习Linux命令行,但是总是没有坚持.[Linux命令学习]系列博客将会记录我学习命令行的点点滴滴. 今天自己学习的4个命令: uname -- 查看系统信息 find -- 查找命令 dos2unix – Dos文件转换成Unix文件 cat -- 显示命令 下面简要描述下这几个命令. uname常用的几个选项: -a(打印所有信息) -s(内核名字) -r(内核版本) find功能强大,常用的语法格式: 路径 -- 在find命令后开始搜索的路径,若未指定则默认从当前路径开始搜索 -

【Linux】linux命令大全

109个Linux命令 目录 1       文件管理... 5 1.1          basename. 5 1.2          cat 5 1.3          cd. 5 1.4          chgrp. 5 1.5          chmod. 6 1.6          chown. 7 1.7          comm.. 7 1.8          cp. 7 1.9          cut 8 1.10        dd. 8 1.11      

linux命令集

线上查询及帮助 [[email protected] ~]# man help (help command内建命令帮助)NAME       bash,  :,  .,  [,  alias,  bg, bind, break, builtin, caller, cd, command, compgen, complete, compopt, continue,       declare, dirs, disown, echo, enable, eval, exec, exit, export

linux 命令总结(转载)

linux 命令总结(转载) 1. 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2.从Linux上远程显示Windows桌面 安装rdesktop包 3. 手动添加默认网关 以root用户, 执行: route add default gw 网关的IP 想更改网关 vi /etc/sysconfig/network-scripts/ifcfg-eth0 更改GATEWAY  /etc/in