Linux Windows的文本在Linux下显示乱码以及由系统空格换行引起的读写问题

    技术2026-01-23  7

             Linux Windows的文本在Linux下显示乱码以及由系统空格换行引起          的读写问题

    DOS 和 windows 使用 回车+ 换行(CR+LF)两个符号作为结束符,显示为 ^M$。

    Linux 则仅使用LF ( $ ) 作为结束符 ,显示为$​​​​​​​。如何验证?

    在Windows下写一个脚本,名字为test.txt。内容为:

    #!/bin/bash  echo "nihai hao ma" >/root/test.txt。

    将该文件放入Linux下赋予权限并执行,并不能成功。报错:test.txt: test.txt: cannot execute binary file

    使用cat命令 , cat -A test.txt 查看会是乱码。

    造成的原因是两个系统的编码不同导致的,Windows通常为ASCII,Linux通常为utf8,通常的解决办法为:

    yum安装dos2unix这个软件,安装命令为:yum install dos2unix -y

    然后运行命令: dos2unix test.txt

    在运行该脚本就正常了。

    还一种情况,是Windows的换行符和空格符合Linux并不相同,这时候即使编码相同,文件显示可能正常,但如果是脚本执行的话会出错。

    这样的情形下,使用vim打开该文件,命令模式下输入命令 set fileformat=unix ,即可解决,无需使用 替换那些命令(%s/^M//g,我看很多人都用这个方法,替换不仅麻烦,也不安全,各种替换,太麻烦)。

    总结:两个方法彻底解决所有问题,第一个方法,yum安装dos2unix这个软件,然后这个命令+ 运行不正常的文件名

    第二个方法,空格和换行符引起的错误, vim或者vi的命令模式下,输入命令  set fileformat=unix 即可解决问题。

     

     

    Processed: 0.028, SQL: 12