系统行末结束符 - 换行(Line Feed)和回车(Carriage Return)的区别

命名来源

引自网络
  回车键,即键盘上的ENTER键,是一个比较有用的键,在文字编辑时,回车键的作用是换行,在输入网址时回车键的作用是“转到”,在执行DOS命令时,回车键的作用是执行。
  在标准键盘上,回车键一共有2个,一个在主键盘区的右边,Shift键的上面,一个在小键盘的右下角,加号键的下面。
  在电脑键盘上,“回车键”曾经使用过“CR”、“RETURN”的字样,后来才统一确定为“Enter”。
  关于“回车键”的来历,在很早以前的机械英文打字机上,有一个部件叫“字车”,每打一个单词,“字车”就前进一格。当打满一行字符后,打字者就得推动“字车”到起始位置,这时打字机会有两个动作响应:一是“字车”被归位,二是滚筒上卷一行,以便开始输入下一行,这个推动“字车”的动作叫 “回车”。后来,在电动英文打字机上,人们增加了一个直接起“回车”作用的键。这个新增的键就被称为“回车键”。

  最后这点说明:回车的本意包含(\n + \r 或者 \r+\n)2个动作。

符号ASCII【16进制】含义
\r,回车0x0D本意是光标回到本行开头。控制字符是Carriage Return,简写为CR
\n,换行0x0A本意是 光标往下一行,但是不一定到下一行行首,什么样的情况下换行不是下一行行首。控制字符是Line Feed,简写为LF

回车

  回车\r:键盘上的Enter键【引自网络】

参考:回车和换行的区别

实践

  1. linux下 vi 编辑一份文档时,发现Enter在linux下对应的是1个字符 $,如下:

      1 abc$
      2 efg hi$
      3 hello$
    

    注意:
    a. linux下面查看一份文件的所有字符的方法是,命令模式下执行 set list 即可。
    b. 使用命令wc line.txt,其中line.txt就是上面文件的名字,可以知道文件的大小是 17Bytes

    3  4 17 line.txt
    
  2. 如何验证不同系统下的行末结束符?
    2.0. 准备工作
      a. 测试工具 Notepad++ v6.8.7
      b. 环境设置:View -> Show Symbol -> Show All Characters,这样才会显示换行等隐藏字符。
      c. 右下有一个不同系统编码格式的设置,右键可以更改。一共有3种格式,分别是:Windows Format、UNIX/OSX Format、Old Mac Format。下面分述:
    在这里插入图片描述
    2.1. Windows Format

    #!/bin/bashCRLF
    echo "hello world"CRLF
    

    如上,Windows Format格式的话,键盘上回车Enter的效果是\r\n
    linux下面查看的效果如下:

    #!/bin/bash^M$
    echo "hello world"^M$
    

    上面执行报错:-bash: ./test.sh: /bin/bash^M: 坏的解释器: 没有那个文件或目录
    原因是:linux的系统行末结束符是\n($),会把$之前的/bin/bash^M识别为shell解释器,所以报错。
    解决方法:linux下修改文件的编码格式,会将windows下面的CRLF统一替换为LF,脚本将会被正常识别、执行。

    2.2. UNIX/OSX Format

    #!/bin/bashLF
    echo "hello world"LF
    

    将正常执行。

    2.3. Old Mac Format

    #!/bin/bashCR
    echo "hello world"CR
    

    linux下面查看的效果是:

    #!/bin/bash^Mecho "hello world"^M
    

    执行脚本报错echo: 坏的解释器: 没有那个文件或目录
    linux下修改文件的编码格式,该方式失效,此时set ff?查看文件格式的话是fileformat=unix,再次设置的话会变成#!/bin/bash^Mecho "hello world"^M$,只是在结尾加了一个LF,再次执行的话错误还是一样的。

    2.4. 回车和换行在windows下和linux下的显示样式如下:

    符号windows下的显示符号linux下的显示符号
    \rCR^M
    \nLF$

总结

  • 一开始的 回车 概念包含2个动作:回到本行行首;换到下一行。
  • 现在有2个概念,回车换行,猜想:因为在不同的操作系统中,对于换到下一行的行首的定义是不一样的,windows采用2个字符 CRLF,unix采用1个字符 LF 或者 CR,如下:
系统类型windowsunixMAC OS
换行且是行首CRLFLFCR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值