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

总述

        移植一个文件系统时候,我在window下git clone了对方仓库源码,然后用FileZilla用ftp协议把文件传到linux虚拟机的指定目录,然后准备更新到内核,没想到源码目录下面的执行脚本却无法使用,我改了半天终于找到几种解决方法,供大家参考。

 

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

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

 

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

 

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

 

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

 

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

这是正常可以执行的文件

 

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

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

 

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

 

 

2.解决过程 

我在stackoverflow找到一篇好的文章

 

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

 

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

 

同时他提出了两个建议:

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

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

 

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

 

第一种方法:dos2unix转化

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

 

  •  
chmod 775 filename

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

 

在安装一个dos2unix 

  •  
sudo apt install dos2unix

 

最后进行转化格式

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

 

执行成功

 

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

 

  •  
%s/^M//g

 

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

 

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

 

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

发现脚本依旧无法执行

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

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

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

 

 

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