Windows 系统上传文件到 Linux 系统出现 DOS 格式换行符

更新时间:2016-11-14 15:26:39

Windows 系统往Linux系统上传文件时如果使用了DOS格式保存编辑了文件,上传到 Linux 系统会导致部分脚本功能无法执行。原因是由于 Windows下文件是以 \r\n 作为换行结束符的,表示成十六进制就是0D 0A,Linux下文件是以 \n 作为换行结束符的,表示成十六进制就是 0A,如果在 Windows 下用文本编辑器使用 dos 模式打开,保存文件后使用 text 模式上传到 Linux 系统,会导致很多脚本程序无法正确识别执行。

用 vi 命令打开 dos 格式文件,行尾会显示~m,Linux 系统很多命令无法处理好 dos 格式文件,所以如果在 windows 系统往 Linux 服务器上传文件时没有使用二进制上传,会导致出现错误的。


解决方法1:

Linux提供了两种文本格式相互转化的命令:dos2unix和unix2dos,dos2unix把"\r\n"转化成"\n",unixtodos把"\n"转化成"\r\n"。

命令dos2unix和unix2dos的使用非常简单,格式为:dos2unix filename

如果想更多的了解这两个命令,可以查看手册:man dos2unix 


解决方法2:

文件传输过程使用二进制方式进行传输,如下是 Filezilla 工具调整为二进制模式的传输方法,点击编辑 > 设置,然后按照以下调整,通过二进制方式重新上传程序即可。

1.JPG


0755-82863450