在linux上使用NFS、FTP等从Windows直接拷贝文件夹或文件时,会发现文件中有“^M”奇怪字符。
原因
这是由于Windows和Linux对回车符定义不同造成的。
对于回车符的定义:
- Windows:0x0D 0x0A
- Unix/Linux: 0x0A
- Mac: 0x0D
解决办法
1.文件上传到linux后调整
$ vim log.txt
:set fileformat=unix
:wq
用vim打开文件修改文件回车符格式后保存即可。
还可以使用sed命令来直接修改文件字符:
sed -i 's/^M//g' filename
但每次Windows 拷贝到Linux,都会出现这个问题。
2.文件上传前解决办法
在windows本地完成脚本的编写后,使用git命令行工具git-bash,运行vim命令打开脚本文件,执行与上面一致的操作,会有如下提示:
warning: LF will be replaced by CRLF in dark.sh.
The file will have its original line endings in your working directory.
这样,该文件以后从Windows拷贝到Linux,不会再出现这个字符问题,脚本执行无异常。
网友评论