命名来源
引自网络
回车键,即键盘上的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键【引自网络】
参考:回车和换行的区别
实践
-
linux下 vi 编辑一份文档时,发现Enter在linux下对应的是1个字符
$
,如下:1 abc$ 2 efg hi$ 3 hello$
注意:
a. linux下面查看一份文件的所有字符的方法是,命令模式下执行set list
即可。
b. 使用命令wc line.txt,其中line.txt就是上面文件的名字,可以知道文件的大小是 17Bytes3 4 17 line.txt
-
如何验证不同系统下的行末结束符?
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下的显示符号 \r CR ^M \n LF $
总结
- 一开始的
回车
概念包含2个动作:回到本行行首;换到下一行。 - 现在有2个概念,
回车
和换行
,猜想:因为在不同的操作系统中,对于换到下一行的行首的定义是不一样的,windows采用2个字符 CRLF,unix采用1个字符 LF 或者 CR,如下:
系统类型 | windows | unix | MAC OS |
---|---|---|---|
换行且是行首 | CRLF | LF | CR |