linux的回车和换行符,【Base】linux和windows下的“回车符”和“换行符”
Date: 2018.7.2
_________________________________________________________________________________________
1、参考
https://blog.csdn.net/flyear_cn/article/details/19045693
https://blog.csdn.net/zhengshifeng123/article/details/53213341/
2、Linux下和Windows下回车和换行符的差异
经常要对windows/linux下文本文件转换下 dos2unix
他们间的区别其实是个回车换行的问题
先来段历史
回车”(Carriage Return)和“换行”(Line Feed)这两个概念的来历和区别。
符号 ASCII码 意义
\n 10 换行
\r 13 回车CR在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被般到了计算机上。那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。于是,就出现了分歧。
在Windows中:
'\r' 回车,回到当前行的行首,而不会换到下一行,如果接着输出的话,本行以前的内容会被逐一覆盖;
'\n' 换行,换到当前位置的下一行,而不会回到行首;
Unix系统里,每行结尾只有“”,即"\n";Windows系统里面,每行结尾是“”,即“\r\n”;Mac系统里,每行结尾是“”,即"\r";。一个直接后果是,Unix/Mac系统下的文件在Windows里打开的话,所有文字会变成一行;而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。
分别在Windws和Linux中查看此文件可知:
Linux中遇到换行符("\n")会进行回车+换行的操作,回车符反而只会作为控制字符("^M")显示,不发生回车的操作。而windows中要回车符+换行符("\r\n")才会回车+换行,缺少一个控制符或者顺序不对都不能正确的另起一行。
c语言编程时(windows系统)\r 就是return 回到 本行 行首 这就会把这一行以前的输出 覆盖掉
如:
int main() {
cout << "hahaha" << "\r" << "xixi" ;
}
最后只显示 xixi 而 hahaha 被覆盖了
\n 是回车+换行 把光标 先移到 行首 然后换到下一行 也就是 下一行的行首拉
int main() {
cout << "hahaha" << "\n" << "xixi" ;
}
则 显示
hahaha
xixi
在windows 系统中,当你输入回车时会自动变成\r\n
在linux下的回车键只代表\n
而在windows下的回车键表示\r\n
\n为进入下一行,\r为打印头回到行首上
linux/unix下只用\n,它就表示回车+换行
而windows下,\r只回车不换行的,\n是换行,但在有些编辑中,单独的\n是不会换行的(如notepad)
一般在程序中,写\n就可以了,它在linux或windows中都能实现回车+换行的功能(只是在文本文件中,linux只会有0x0a,windows会自动换为0x0d 0x0a)
ASCII中LF与CR区别?
在文本处理中, CR, LF, CR/LF是不同操作系统上使用的换行符.
Dos和
windows
采用回车+换行CR/LF表示下一行,
而UNIX/Linux采用换行符LF表示下一行,
苹果机(MAC OS系统)则采用回车符CR表示下一行.
CR用符号'\r'表示,
十进制
ASCII
代码是13,
十六进制
代码为0x0D;
LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A.
所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.
一般操作系统上的运行库会自动决定文本文件的换行格式. 如一个程序在windows上运行就生成CR/LF换行格式的文本文件,而在
Linux
上运行就生成LF格式换行的文本文件.
在一个平台上使用另一种换行符的文件文件可能会带来意想不到的问题, 特别是在编辑程序代码时. 有时候代码在编辑器中显示正常, 但在编辑时却会因为换行符问题而出错.
很多文本/代码编辑器带有换行符转换功能, 使用这个功能可以将文本文件中的换行符在不同格式单互换.
在不同平台间使用
FTP
软件传送文件时, 在ascii文本模式传输模式下, 一些
FTP客户端
程序会自动对换行格式进行转换. 经过这种传输的文件字节数可能会发生变化. 如果你不想ftp修改原文件, 可以使用bin模式(二进制模式)传输文本.
linux的回车和换行符,【Base】linux和windows下的“回车符”和“换行符”相关推荐
- linux和windows下的“回车符”和“换行符”
经常要对windows/linux下文本文件转换下 dos2unix 他们间的区别其实是个回车换行的问题 先来段历史 回车"(Carriage Return)和"换行"( ...
- window环境下运行linux解压命令,使用压缩的方式将Windows下的zip压缩包上传到Linux系统的方法解析...
我们可以使用在Windows下压缩文件夹,然后到Linux系统下解压缩的方式,完成整个上传工作. 第一步:在Windows系统下,将整个文件夹压缩成zip后缀的压缩包 方法一: 在文件夹xtemp上, ...
- windows下批处理设置U盘盘符为U【非PE】
U盘下建立如下两个文件: getU.bat setU.bat 直接双击运行getU.bat即可,setU.bat可以隐藏起来. 其中getU.bat内容如下: @echo off set " ...
- Windows下cmd命令无法切换盘符
发现使用cmd的cd命令无法从c盘切换到d盘, 在切换之前先打 D: 再正常使用cd命令就可以啦
- windows下回车换行符在Linux下显示^M问题
背景: win下的PHP文件打包,在Linux下解压后,在git status 时,显示发生修改,但并没有修改,查看文件会发现这种字符^M其实就是因为换行符的原因 ,Windows换行符和Linux换 ...
- linux下文件与Windows下文件格式的区别与转换
问题: Windows下的TXT文件上传到Linux系统上,用cut,grep.sed,awk等文本处理工具处理过后再次传到Windows电脑上,发现内容都连到一块了,百度了一下才知道换行符被删除了, ...
- windows下编译linux内核,windows上可编译Linux内核
编译过程: 1). 解压后默认的文件夹位置是在D:\Linux-0.11,如果你不是将文件解压到该目录下, 你要修改MinGW32目录下的MinGW32.bat文件,将里面的PATH指向MinGW32 ...
- 设置windows引导linux分区,windows下安装grub引导Linux
在安装Linux和windows双系统时通常是先安装windows再安装Linux,因为windows会对主引扇区录进行充0,因而破坏主引导记录.当安装完windows再安装Linux,Linux会将 ...
- linux添加sshkey,使用SSH密钥对连接Linux实例
本地为Linux或其它支持SSH命令的环境 本节介绍如何在Linux或其他支持SSH命令的环境(如Windows下的MobaXterm)下使用SSH密钥对登录Linux实例. 方式一 找到您所下载的. ...
最新文章
- Vbs脚本编程简明教程之十
- 数据量大mysql当月_mysql 1.5倍数据量导致20多倍的执行时间?
- 经典的printk 写法
- 笔记--待解决,整理
- 4.Hibernate O/R 映射
- 禁用浏览器滚动条的解决方案
- Web前端性能优化——编写高效的JavaScript
- 云教版认识计算机说课,【教学设计】第1册第1课《认识电脑交朋友》
- Android中的Intent详细讲解【转】
- Linux查看文件以及文件夹个数
- SQL Server 2008 索引超出了数组界限
- 刘润《五分钟商学院》思维导图笔记 - 管理篇
- 多线程并发面试题合集
- 深度学习数据集—鞋子、凉鞋和靴子图片数据集介绍
- Correct the classpath of your application so that it contains a single, compatible version of 包名
- 小程序成四大行业商家标配,小程序代理市场如何
- 习题4-9 打印菱形图案(15分)
- MISRA C (3)
- 静默活体检测之Silent-Face-Anti-Spoofing
- 萌新必看—10种前端存储哪家强,一文读尽!
热门文章
- 想创业吗?先学学美国人的穷!
- 【腾讯Bugly干货分享】WebVR如此近-three.js的WebVR示例解析
- 7.HBuilderX使用
- Android开发杂草园
- php array_diff菜鸟,TCGA
- mybatis 自动生成dao mapper 文件
- 搭建Maven父子项目结构
- 中国联通:正筹划推进开展与混改相关事项
- 苹果授权登陆 服务端验证(java)
- 点击Sdk目录下tools目录下的monitor.bat 出现Unexpected error while parsing input: lnvalid ui automator hierarchy