今天调试一个脚本,每句结尾都有大量/r 换行字符。检验了很多次都没调试成功。
后来才发现这个脚本是在windows环境下编写的,直接ftp拖到了linux服务器上。
vi下用 :set ff 查看文件的编码格式,果然是dos的。
用:set ff=unix 将文件变为unix格式,就调试成功了。
备注点1 win和linux换行的区别:
Unix体系里,每行结尾只有“<换行>”,即“n”;
Windows体系里面,每行结尾是“<换行><回 车>”,即“nr”。
一个直接结果是,Unix体系下的文件在Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix下打开的话,在每行的结尾可能会多出一个^M符号。
备注点2 文件格式转换的方式:
方法1:
在命令模式下:输入:%s/^M//g 然后,回车即可替换
注,其中”^M”的输入,分别是“Ctrl+v”、“Ctrl+M”键生成的
方法2:
使用vi打开文本文件
vi dos.txt
命令模式下输入
:set fileformat=unix
:w
方法3:
使用sed 工具
sed ’s/^M//’ filename > tmp_filename
方法4:
既然window下的回车符多了‘r’,那么当然通过删除‘r’ ,也可以实现:
tr -d ‘r’
方法5:(最常用的方法)
$ dos2unix filename