我cat
在终端中没有任何参数地打开:
cat
然后我输入一些文字并按下Ctrl+D
,我输入的内容就会得到回显。
我重新输入一些文字并按下Enter
,我输入的内容也得到了回显。
Ctrl+D
和之间有区别吗Enter
(我说的是当按下这些键之一时终端中有文本,因为当没有文本时,Ctrl+D
发送EOF
,而Enter
不会)。
答案1
enter
使终端设备线路规则将当前输入缓冲区加上\n
(\r
通过线路规则设置由终端(仿真器)发送的翻译而来icrnl
)发送到正在从终端设备读取的应用程序。^D
使终端设备行规则发送当前输入缓冲区,不带\n
“或”^D
字符(该字符会被行规则吃掉,除非您^V
事先发送)。
^D
连续按两次会退出cat
,因为它假定没有更多内容可读取(read()
返回 0 字节)。