`

linux 文件 dos unix格式,unix和dos下文本文件得区别

    博客分类:
  • java
 
阅读更多
问题:
    当在window下编辑文本文件,使用ftp上传linux服务器,文件的真实大小读取的就是跟预设的不一样,导致文件传输失败,表现的现象是总多了1个字节

排查:
通过比对曾经传输成功的文件和这个传输失败的文件发现了原因
    原来文本文件中分隔换行符在unix和dos下格式是有区别。
    在UE里,使用十六进制可以查看到unix下回车是用0xOA表示的,而dos下的回车则是0x0D0A
    在window下比在unix下多了一个字节,这也是为啥校验总是失败。
   最后通过UE将文件转成unix格式,并且通过二进制传输的方式通过ftp上传到linux服务器,文件大小就对了。

总结:
    任何一个小的知识点都可能成为拦路虎,以后要多加学习多加总结,多加留意。
学习:
此处是有个知识点的,关于换行和回车
一:回车”(Carriage Return)和“换行”(Line Feed)起源
首先,弄清两个概念:
回车CR-将光标移动到当前行的开头。
换行LF-将光标“垂直”移动到下一行。(而并不移动到下一行的开头,即不改变光标水平位置)

在计算机还没有出现之前,有一种叫做电传打字机(Teletype Model 33,Linux/Unix下的tty概念也来自于此)的玩意,每秒钟可以打10个字符。
但是它有一个问题,就是打完一行换行的时候,要用去0.2秒,正好可以打两个字符。
要是在这0.2秒里面,又有新的字符传过来,那么这个字符将丢失。
于是,研制人员想了个办法解决这个问题,就是在每行后面加两个表示结束的字符。
一个叫做“回车”,告诉打字机把打印头定位在左边界;另一个叫做“换行”,告诉打字机把纸向下移一行。这就是“换行”和“回车”的来历,从它们的英语名字上也可以看出一二。
后来,计算机发明了,这两个概念也就被搬到了计算机上。
那时,存储器很贵,一些科学家认为在每行结尾加两个字符太浪费了,加一个就可以。
于是,就出现了分歧。
Unix系统里,每行结尾只有“<换行>”,即"\n";
Windows系统里面,每行结尾是“<换行><回车>”,即“\n\r”;
Mac系统里,每行结尾是“<回车>”,即"\n";
一个直接后果是,Unix/Mac系统下的文件在 Windows里打开的话,所有文字会变成一行;
而Windows里的文件在Unix/Mac下打开的话,在每行的结尾可能会多出一个^M符号。

二:区别

CR用符号'\r'表示, 十进制ASCII代码是13, 十六进制代码为0x0D

LF使用'\n'符号表示, ASCII代码是10, 十六制为0x0A


Dos和windows采用回车+换行CR/LF表示下一行,

而UNIX/Linux采用换行符LF表示下一行,

苹果机(MAC OS系统)则采用回车符CR表示下一行.


所以Windows平台上换行在文本文件中是使用 0d 0a 两个字节表示, 而UNIX和苹果平台上换行则是使用0a或0d一个字节表示.

注1:关于“回车键”的来历,还得从机械英文打字机说起。在机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,
打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫“回车”。

注2:这种差别在编程、不同OS之间传输纯文本时最需要注意。

参考了这两位博主,感谢
https://blog.csdn.net/weixin_34640289/article/details/116556550
https://mp.weixin.qq.com/s/kkpSLEiFNQR8IM1zmMcCig
分享到:
评论

相关推荐

    linux下dos转unix

    linux下dos文件转unix格式,方便运行脚本,不因格式而出错误

    UNIX和LINUX和DOS

    UNIX和LINUX和DOS

    aix下面txt从dos格式转到unix格式 dos2unix

    经常遇到要在aix上写一些文本或者脚本,但是用vi太费劲,于是在win下写好 ...在UNIX中,每一行的结束符是换行符; 而在WINDOWS中,每一行的结束符是&lt;RETURN&gt;+换行符. 用以下几种办法可以将其格式互为转换.

    dos2unix linux安装包

    dos2unix linux安装包, 支持各个linux操作系统,属于比较新的安装包,有需要的同学请你去吧

    dos2unix命令 将DOS格式的文本文件转换成UNIX格式

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。而Unix下的文本文件是以\n作为断行标志...

    linux的unix2dos的安装包

    只要下载该安装包然后执行rpm -ivh unix2dos-2.2-35.el6.x86_64.rpm 以后就可以在linux下执行unix2dos命令

    unix2dos dos2unix 文件格式转换

    unix2dos/u2d unix转换成windows格式命令 dos2unix/d2u windows转换成unix格式命令 getclip 获取剪贴板内容 putclip 写入剪贴板内容

    dos2unix安装包附安装说明书.zip

    linux系统下,dos2unix安装包及安装说明

    unix-dos 文本转换工具

    c) unix2dos #linux下的可执行文件,将linux文档转换到windows下 #命令格式:unix2dos &lt;源文件&gt; &lt;目标文件&gt; d) dos2unix #linux下的可执行文件,将windows文档转换到linux下 #命令格式:dos2unix &lt;源文件&gt; &lt;目标...

    DOS文件格式转化为UNIX文件格式的C程序.zip

    用C写的程序,描述了怎样将DOS文件转化为UNIX格式的文件

    [原创]unix2dos dos2unix 批量 windows升级版

    unix2dos批量转换工具(双向) MS桌面版 前一版描述较不祥细,以至于很同朋友不知道可以选择多个文件拖放,故在此多啰嗦几句。 注明:1、窗口支持拖放,单文件或多文件同时拖放均可 2、新版本添加文件列表窗口中点...

    文件格式转换.DOS2UNIX

    文件格式转换.DOS2UNIX,就是回车换行符的转换,从\r\n到\n

    dos2unix,unix2dos,mac2unix,unix2mac 64bit&32bit

    dos2unix,unix2dos,mac2unix,unix2mac

    windows下UNIX2DOS

    使用方法:拖放要转换的文本文件至输入窗口中,选择要转换的方式(DOS2UNIX或UNIX2DOS),点转换即可直接转换 注:支持命令提示符下参数操作 功能: unix文本文件与dos文本文件相互转换 1、unix文本转DOS文本...

    dos2unix unix2dos

    类unix文件拷贝到windows系统,就会丢失换行标识, windows文件拷贝到类unix系统,就会出现"^M"标识 可以用于解决Ftp上传二进制文件时没加binary, dos2unix 没加binary上传的文件. unix2dos集成在dos2unix中

    dos2unix和unix2dos

    结合popt可以编译出dos2unix以及unix2dos,编译时候需要添加LIBRARY_PATH,设置popt库目录。

    dos2unix.zip

    linux中没有dos2UNIX命令怎么解决办法,dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的(DOS/MAC to UNIX text file format converter)。DOS下的文本文件是以\r\n作为断行标志的,表示成十六进制就是0D 0A。...

    dos2unix-6.0.3-4.el7.x86_64.rpm

    dos2unix命令用来将DOS格式的文本文件转换成UNIX格式的

    DOS文件格式转化为UNIX文件格式的C程序.zip_DOS

    DOS文件格式转化为UNIX文件格式的C程序

    Linux&unix;大学教程

    Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。 Linux能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承...

Global site tag (gtag.js) - Google Analytics