首页 > 编程知识 正文

linux下生成文件格式是dos(重启dos2unix 服务)

时间:2023-05-04 00:52:39 阅读:67000 作者:1788

发现今天有问题,无法将本地用editplus或txt编写的shell通过sftp传递给服务器运行,报告了错误。 我在谷歌上查了一下,发现原来win上的文本格式和linux上的不一样。 如果我们用win写文件,用dos2linux转换就可以运行了。

在centos上可以用yum安装。 命令如下,其他系统根据需要安装即可。 [ root @ xiaohuai~] # yum install dos2unix-y

用途说明

DOS2unix命令用于将dos格式的文本文件转换为UNIX格式(dos/mactounixtextfileformatconverter )。 DOS下的文本文件将rn作为换行标志,如果用十六进制表示,则为0D 0A。 Unix下的文档将n作为换行标记,如果用十六进制表示,则为0A。 DOS格式的文本文件位于Linux下,在较低版本的vi中打开时,行尾会显示^M。 此外,对于shell脚本,许多命令无法成功处理这种格式的文件。 Unix格式的文本文件在Windows上用Notepad打开时会一起显示。 因此,需要将两种格式的文件相互转换,这些文件对应于将UNIX格式的文本文件转换为DOS格式的unix2dos命令。

一般参数

将DOS格式文本文件转换为Unix格式的最简单用法是dos2unix直接赶上文件名。

格式: dos2UNIX文件

如果要一次转换多个文件,请将这些文件名直接附加在dos2unix之后。 (注:带有或不带有-o参数都有相同的效果)

格式: dos2unix文件1文件2文件3

格式: dos2unix-o文件1文件2文件3

上述内容将在转换时直接在原始文件中修改。 如果您想将转换结果保存到其他文件,但源文件保持不变,则可以使用-n参数。

格式: dos2unix old文件新文件

如果不更改文件的时间戳,请添加-k参数。 因此,这些命令可以添加-k参数以保留文件的时间戳。

格式: dos2unix-k文件

格式: dos2unix-k文件1文件2文件3

格式: dos2unix-k-o文件1文件2文件3

格式: dos2unix-k-n old文件新文件

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

使用案例

示例DOS格式文本文件在Linux上的表示形式

当前有一个在Linux上用vi编辑的脚本文件job.sh。 [root@xiaohuai ~]# cat job.sh

#! /简单的乌冬面/sh

date job.txt

将其转换为DOS格式的文本文件。 [ root @ Xiao Huai~] # unix2dos job.sh

unix2dos : convertingfilejob.shtodosformat .

请试着执行一下。 [root@xiaohuai ~]# ./job.sh

-bash:/job.sh:权限不足

[root@xiaohuai ~]# chmod x job.sh

[root@xiaohuai ~]# ./job.sh

-bash:/job.sh: /简单面条/sh^M: bad interpreter:中没有该文件或目录

对于DOS格式的脚本文件,无法解释执行。 由于脚本文件的第一行用于指定解释器,因此在Linux系统上认为解释器是/简单的面条/sh^M而不是/简单的面条/sh。

让我们用Linux下的几个命令来看看DOS格式文件的真实身份。 [ root @ xiaohuai~] # cat-vjob.sh==cat-v可以看到文件中的非打印字符,但不能使用没有-v参数的cat命令。 #! /简单的面条/sh^M ^M date job.txt^M

^M

[ root @ xiaohuai~] # hex dump-cjob.sh==hex dump-c可以看到文件中每个字节的十六进制表示形式。 00000000023212 f 6269 e 2f 73680 d 0a 0d 0a 646174|#! /简单的面条/sh . dat|000001065203 E6 a6 f 622 e 7478740 d 0a 0d 0a|ejob.txt . |

0000001e

用[root@xiaohuai ~]# vi job.sh==打开时,在下面可以看到格式为[dos]的提示。 有些版本vi显示行尾为^M。 #! /简单的面条/sh date job.txt

~

~

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

将DOS格式恢复为Unix格式,看看效果如何。 root@xiaohuai ~]# dos2unix job.sh

dos2unix : convertingfilejob.shtounixformat .

[root@xiaohuai ~]# ./job.sh

可以执行。 不再报告“-bash:/job.sh: /简单面条/sh^M: bad interpreter:中没有该文件或目录”的错误。

[根@小湖~ ] #

示例dos2unix -k和dos2unix -n使用案例[root@xiaohuai ~]# cat 1.txt

1

2

3

欧洲足球锦标赛

[root@xiaohuai ~]# file 1.txt

1.txt : ascii文本

[root@xiaohuai ~]# ls -l 1.txt

-rw-r----r----1根路由611-14093360081.txt

[root@xiaohuai ~]# date

2010年11月14日星期日09:28:42 CST

[ root @ xiaohuai~] # unix2dos-k1.txt==保留文件的时间戳

unix2dos :转换文件1.txt todos格式.

[root@xiaohuai ~]# ls -l 1.txt

-rw-r----r----1根路由911-14093360081.txt

[ root @ xiaohuai~] # dos2unix-n1.txt2. txt==1. txt转换为2.txt

dos2unix :转换文件1.txtto file2. txtinunixformat .

[ root @ xiaohuai~] # ls-L1.txt2. txt

-rw-r----r----1根路由911-14093360081.txt

-rw-r----r----1根路由611-14093360302.txt

[ root @ xiaohuai~] # file1. txt2. txt

1.txt : ascii文本,with CRLF line terminators

2.txt : ascii文本

[root@xiaohuai ~]# cat -v 1.txt

1^M

2^M

3^M

[root@xiaohuai ~]# cat -v 2.txt

1

2

3

[根@小湖~ ] #

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。