可以用 cat –A命令来观察以DOS (Windows系统) 建立的档案的特殊格式,发现在DOS使用的断行字元(换行)为^M$,我们称为 CR 与 LF 两个符号。而在Linux系统下,换行符号仅有LF($)。因此,从windows上传文件至linux系统时,需要对文件进行格式转换。
MS-DOS及Windows是回车+换行来表示换行,因此在Linux下用Vim查看在Windows下写的代码,行尾后“^M”符号。
将Windows中的文本文件传到Linux后,会在每行的末尾多出一个^M符号。当进行Shell编程时,该符号可能会导致正则表达式匹配失败。
在linux系统中安装dos2unix与unix2dos两个软件。
#yum install –y dos2unix
#yum install –y unix2dos
使用以下命令对文件格式进行转换
#dos2unix [-kn] file [newfile]
#unix2dos [-kn] file [newfile]
选项与参数:
-k :保留该档案原本的 mtime 时间格式 (不更新档案上次内容经过修订的时间)
-n :保留原本的旧档,将转换后的内容输出到新档案。
eg: dos2unix -k –n lamp.sh lamp.sh1 将windows下面编辑的文本lamp.sh转换为linux格式下的lamp.sh1,并保留文本的时间格式。
或者利用以下命令进行替换:
vim –b lamp.dos.sh打开文件,再以一下命令进行替换。
:1,$s/^M//g 替换掉所有的^M(先按ctrl+V再按ctrl+M得到)