一个ftp协议传输文件之后执行脚本无法工作的情况

作者:良知犹存

转载授权以及围观:欢迎添加微信号:Conscience_Remains

总述

        移植一个文件系统时候,我在window下git clone了对方仓库源码,然后用FileZilla用ftp协议把文件传到linux虚拟机的指定目录,然后准备更新到内核,没想到源码目录下面的执行脚本却无法使用,出现了如下bug提示:

bash: ./patch-ker.sh: /bin/sh^M: bad interpreter: No such file or directory 我改了半天终于找到几种解决方法,供大家参考。

 

1.首先我简单描述一下过程

我 git clone 了对方的仓库源码,并用FileZilla传输到虚拟机

 

 

紧接着我进行更新到内核,然后我发现该脚本无法工作

 

这是经过ftp传输过来的文件

 

这是正常可以执行的文件

 

紧接着我用查看了权限,发现没有执行权限,然后我添加了执行权限发现脚本依旧无法工作

 

 

 

2.解决过程 

我在stackoverflow找到一篇好的文章

 

 

对方也是遇到这样一个问题,上面蓝色标记的问题就是一个答主的回复,和我遇到的情况很类似,他说可能是window用ftp ascii模式传输之后文件内容发生了改变 导致文件无法识别 

 

同时他提出了两个建议:

第一:使用dos2unix 转化工作直接转化文本

第二:用vi编辑文本利用文本替换指令进行操作

 

下面是我执行过程,答主是给了一个方向,实际执行的时候还要多一些其他步骤

 

第一种方法:dos2unix转化

首先我们还是要先把文件的执行属性添加上

 

chmod 775 filename

 

在安装一个dos2unix 

 

sudo apt install dos2unix

 

最后进行转化格式

 

执行成功

 

第二种方法: 利用vi编辑器%s命令替换 失败了

 

%s/^M//g

 

截图因为后面记录问题原因,重新截取后指令没有全部输完有些瑕疵。

 

 

 

发现脚本依旧无法执行

 

第三种方法: 这里我还用了第三种方法,没什么技术含量就是在虚拟机里面直接git clone代码,然后执行成功。

 

 这就是我分享的一致一个linux文件系统的时候遇到的一个小问题,如果大家有什么遇到其他解决方法,欢迎分享交流哈。

 

更多分享,扫码关注我

posted @ 2020-07-10 09:09  良知犹存  阅读(285)  评论(0编辑  收藏  举报