• 一个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文件系统的时候遇到的一个小问题,如果大家有什么遇到其他解决方法,欢迎分享交流哈。

    更多分享,扫码关注我

  • 相关阅读:
    SQLAlchemy Table(表)类方式
    MySQL简单入门
    第四次作业
    第三次随笔
    第二次随笔
    第一次随笔
    第四次随笔
    第三次作业
    第二次随笔
    第一次随笔
  • 原文地址:https://www.cnblogs.com/conscience-remain/p/13277528.html
Copyright © 2020-2023  润新知