码迷,mamicode.com
首页 > 系统相关 > 详细

DOS与Linux的换行字符

时间:2015-06-09 11:16:23      阅读:144      评论:0      收藏:0      [点我收藏+]

标签:

一、vim打开window下的文件出现 ^M

首先理解,dos(windows)下建立的文件的换行是  ^M\$ (CRLF) ,而在Linux下面,仅仅是以 \$ (LF) 来做断行符号;

(^M\$ 其实没有 \ ,只不过,编辑器默认会使其变为特殊符号,所以加了反斜线)

这就造成了,vim打开dos文件时,每行末尾出现^M的符号

而这个符号影响很大,如果是一个 shell script 脚本,可造成 “程序无法执行”的状态

那么如何解决呢?

 

二、避免每行出现^M以及解决办法

1. 可设置所使用的编辑器的断行

  如 sublime text 中,选项:"default_line_ending": "system",

  表示,随系统的不同而变化,windows下就是CRLF,unix就是LF

2. 使用命令替换符号

  vim命令行状态下输入:

  :%s/[Ctrl-v][Enter]//g

  Ctrl-v的作用是,使得接着输入的回车键被认为是一个特殊字符,而不是vim命令的结束

3. 使用dos2unix命令

  如:dos2unix -k -n test.txt test.new.txt

            -k ,表示 保留该文件原本的 mtime 时间格式(不更新文件上次内容经过修订的时间)

            -n ,表示 保留原本文件,将转换后的内容输出到新文件中

      注意:-k -n  不能连写成 -kn ,否则执行不成功;

       当然还有相应的 unix2dos 命令,用于两者的相互转换

       具体 可通过 dos2unix --help查看相关设置

 

DOS与Linux的换行字符

标签:

原文地址:http://www.cnblogs.com/fanfan259/p/4562800.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!