DOS与Linux的换行字符

一、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查看相关设置

时间: 2024-10-07 19:56:37

DOS与Linux的换行字符的相关文章

windows和linux中换行符的转换

数据开发平台使用上传脚本报错:保存失败,文件编码格式不正确,请修改文件换行符为Unix终束符! 修改方式:DOS系统下,使用文本编译器另存为,然后选择换行符为unix终束符. 解释: windows 文件的换行符为:[CR][LF] Linux和Unix文件的换行符为:[LF] 有些需要转换使用,如修改或替换安卓andriod的hosts文件,需要保证换行符为Unix形式才能使用. 其中一种办法是在linux系统中重新保存一份文件: 但是:如何在windows系统中,转换成Unix / Linu

[Linux]DOS 和 Linux 常用命令的对比

许多在 shell 提示下键入的 Linux 命令都与你在 DOS 下键入的命令相似.事实上,某些命令完全相同. 本附录提供了 Windows 的 DOS 提示下的常用命令以及在 Linux 中与它们等同的命令.附录中还提供了如何在 Linux shell 提示下使用这些命令的简单实例.请注意,这些命令通常有许多选项,要进一步学习每一个命令,请阅读相关的说明书(man)页(例如,在 shell 提示下键入 man ls 就可以读到关于 ls 命令的信息). 命令的目的 MS-DOS Linux

Linux 设备驱动程序 字符设备

已经无法再精简,适合入门. 1 #include<linux/module.h> 2 #include<linux/init.h> 3 4 #include<asm/uaccess.h> 5 #include <linux/types.h> 6 #include<linux/fs.h> 7 #include<linux/cdev.h> 8 struct mengc_dev{ 9 char data[64]; 10 struct cde

使用Runtime.exec()运行windwos dos或linux shell命令

使用Runtime.exec()运行windwos dos或linux shell命令,按实际情况具体测试 实例代码: package com.bookoo.test.command; import java.io.BufferedReader; import java.io.BufferedWriter; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter

git在window与linux的换行符问题

1:背景.我win7,后端是win10,使用了TortoiseGit工具.我使用ssh,他使用http.仓库是在linux,使用gitLab管理 2:问题.仓库是总监之前建好的.后端把文件add后push,我clone本地后没有放进编辑器中也没有做任何的修改,马上commit,提示所有文件已修改,打开对比了,只是结尾的换行有修改 3:差异.因为之前没有遇到过这样的问题,不知从何下手,刚开始以为是编码问题,百度谷歌后不知所以然,就从编码到git版本用排除法一一对比,最后发现我们2个人的连接方式不一

Android Adb Shell命令详解(带DOS、Linux命令)

在Android应用程序开发过程中,经常用到adb shell,这里对常规命令做一个简单的总结. 内容包括Dos.Linux.Shell三块(通过查阅书籍及网络资料所得). 1.首先看Windows DOS下的命令 cd——改变当前目录 dir——显示文件夹内容 md——建立子目录 copy——拷贝文件 move——移动文件 del——删除文件 cls——清屏 attrib——显示文件的(文件)属性 2.接下来给出Linux下常规命令 cd——改变当前目录 pwd——查看当前所在目录完整路径 l

为何windows dos和Linux shell有这样的差别??

Windows dos中用impdp导入数据库: impdp "sys/[email protected]:1521/sidname as sysdba" directory=dbdir dumpfile="full.dmp" full=y 就可以成功导入一个完整的数据库, 可以linuxshell中,却非要对双引号加上转意!!如下 impdp   \"sys/[email protected]:1521/sidname as sysdba\"

Linux Shell编程 - 字符截取命令

01.字段提取命令 cut  =>   cut [选项] 文件名 -f 列号: 提取第几列 -d 分隔符:按照指定分割符分割列 例如:cut  -f  2,4(列号:,逗号可以多行提取)  student.txt cut  -d “:” -f 1,3 /etc/passwd 02.格式化输出命令 printf 命令  => printf  ‘输出类型输出格式’  输出内容 输出类型: %ns:输出字符串.n 是数字指代输出几个字符 %ni:输出整数.n 是数字指代输出几个数字 %m.nf:输出

Linux 替换^M字符 方法

转自:http://blog.csdn.net/lhf_tiger/article/details/8203013 真恶心,10X流程产生的csv文件的行位居然有^M字符,害我一直在找报错原因,真是坑,还好最后我找出来了.一直在用Python,perl是越来越不熟练了.调试花了好久. 替换^M字符在Linux下使用vi来查看一些在Windows下创建的文本文件,有时会发现在行尾有一些"^M".有几种方法可以处理. 1.使用dos2unix命令.一般的分发版本中都带有这个小工具(如果没有