今天在配置linux的dns服务器时,在linux下修改配置文件是很麻烦的,所以我想到了把配置文件拿到windows上,修改后再应用到linux上。当我通过文本文档修改linux上的配置文件时,我把它转移到linux上,用cat命令检查它。发现每行末尾多了一个M字符,只好用vi重新打开,逐行删除。
后来查了资料才知道是dos和linux的换行符不同,所以有了更好的解决方案。详见后面的解释。
在linux下,我们可以使用cat命令查看windows系统的resume的文本文件,但是我们会发现dos下的换行符是M,我们变成了CR和LF。在linux下,只有LF($)可用。这样,就多了一个CR(^M)符号。如果是shell的脚本文件,就无法正常执行。
以前我们用vi逐行删除。有好的解决办法吗?你可能觉得把格式转换成linux就可以了。怎么做?让我们一起来看看吧。事实上,几个简单的命令就足够了。
#dos2unix [-kn]文件[newfile]
#UNIX2dos [-kn]文件[新文件]
参数分析
-k:保留文件的原始mtime时间格式(不更新文件最后内容被修改的时间)
-n:保留原来的旧文件,将转换后的内容输出到新文件,比如dos2UNIX -n old new。
例如:
#UNIX2dos -k man.config
# dos 2 UNIX-k-n man . config man . config . Linux
就是这么简单,所以在不同系统之间复制纯文本文件的时候,一定要使用UNIX2dos或者这个dos2UNIX命令来转换换行符格式。