1. CRLF
CRLF -- Carriage-Return Line-Feed 回车换行。
CR:回车,ASCII 13, \r,
LF:换行,LF, ASCII 10, \n。
windows下使用 \r\n 换行, linux使用 \n 换行。
windows断行字符 ^M$, linux仅有 $
如果linux下shell文件包含^M字符,则无法执行,需要去掉 \r 。
2. dos2unix和unix2dos
dos2unix和unix2dos这两个命令用来转换CRLF。
dos2unix -kn file newfile
-k 保持源文件mtime
-n 保留旧文件,转换结果输出到新文件。
3. 使用举例
windows下新建的文件test。
#test 为windows文件
$ cat -A test
baidu^M$
google^M$
# 转换到linux
$ dos2unix -k -n test test.linux
dos2unix: converting file test to file test.linux in UNIX format ...
# 查看时间相同, 文件大小不一致
$ ll
-rw-rw-r-- 1 work work 15 Aug 9 19:16 test
-rw------- 1 work work 13 Aug 9 19:16 test.linux
# cat -A 查看
$ cat -A test.linux
baidu$
google$
#unix转换到windows
$ unix2dos test.linux
unix2dos: converting file test.linux to DOS format ...
# 查看 大小和时间
$ ll
-rw-rw-r-- 1 work work 15 Aug 9 19:16 test
-rw------- 1 work work 15 Aug 9 19:18 test.linux
地址: http://blog.csdn.net/yonggang7/article/details/38459143