谈谈windows编辑好的文件无法在Linux下运行问题——DOS与linux结束字符

问题

经常会遇到这个问题,一个shell脚本在windows上打开好好的,编辑好后放到linux下却无法正常运行;在linux下打开该脚本,发现文件最后多了些 ^M,这是个什么东东,心里是不是很懵逼,且看以下分析把。

DOS 和 windows 使用 回车+ 换行(CR+LF)两个符号作为结束符,显示为 ^M$。如下图所示:

在这里插入图片描述

Linux 则仅使用LF ( $ ) 作为结束符 ,显示为$。如下图所示:

在这里插入图片描述
因此,DOS下编辑的文件会比Linux下多一个回车符^M,会导致DOS下编辑的文件到了Linux下无法被执行。(如shell脚本)
将DOS文件与Linux文件转换,可以使用 dos2unix 和 unix2dos命令。

dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
-k :保留该文件原本的 mtime 时间格式 (不更新文件上次内容经过修订的时间)
-n :保留原本的旧文件,将转换后的内容输出到新文件,如: dos2unix -n old new

也可以采用sed命令进行替换,将DOS文件转为Linux文件,如下:

sed -i 's/^M//g'  /test.c   

说明: DOS 转 unix格式(^M的输入方式是Ctrl+v,Ctrl+m)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值