以下内容源于网络资源的学习与整理,如有侵权请告知删除。
有时在WIN下编辑好的脚本文件上传到LINUX服务器中不能正常执行,开始误认为是LINUX配置问题,后来才发现是WIN与LINUX存储文件时的换行符标志不同造成的。在DOS使用的换行符为 ^M$,我们称为CR与LF两个符号,而在Linux中则仅有LF ($) 这个换行符。
可以使用“dos2unix”和“unix2dos”这两个命令进行互换。但这两个命令在Ubuntu发行版本中不存在,可通过命令“sudo apt-get install tofrodos”进行安装。
命令格式
dos2unix [-kn] file [newfile]
unix2dos [-kn] file [newfile]
参数含义
-k:保留该文件原来的mtime时间格式(不更新文件上次内容经过修改的时间)。
-n:保留原来的旧文件,将转换后的内容输出到新文件,如:dos2unix -n old new。
实例说明
范例一:将linux格式的hosts文件更新为dos格式。
# unix2dos -k hostsunix2dos: converting file hosts to DOS format ...
此时hosts文件的时间不会改变,将换行符修改成为DOS的CRLF。
范例二:将dos格式的hosts.dos文件转换Linux格式,并输出到hosts.linux
# dos2unix -k -n hosts.dos hosts.linux
dos2unix: converting file hosts.dos to file hosts.linux in UNIX format ...
# ll
-rw-r--r-- 1 root root 288 Aug 1 13:30 hosts.dos
-rw------- 1 root root 279 Aug 1 13:30 hosts.linux
由于DOS格式中多了CR字符,所以hosts.dos文件比hosts.linux大一些。