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

    更多分享,扫码关注我

  • 相关阅读:
    Rotation Kinematics
    离职 mark
    PnP 问题方程怎么列?
    DSO windowed optimization 代码 (4)
    Adjoint of SE(3)
    IMU 预积分推导
    DSO windowed optimization 代码 (3)
    DSO windowed optimization 代码 (2)
    OKVIS 代码框架
    DSO windowed optimization 代码 (1)
  • 原文地址:https://www.cnblogs.com/conscience-remain/p/13277528.html
Copyright © 2020-2023  润新知