Tyi*_*ilo 9 bash keyboard-shortcuts cat
我可以cat
通过做一个非常简单的文本编辑器来使用cat > foo.txt
。
如果我然后输入:
bar
baz
Run Code Online (Sandbox Code Playgroud)
然后按ctrl+ D,它现在看起来像这样:
$ cat > foo.txt
bar
baz^D
Run Code Online (Sandbox Code Playgroud)
光标在^
. 如果我再按一次,文件将被保存。但是,如果我按任何东西(好吧也许不是任何东西,但主要是任何东西),我只是继续编辑文件。
这是正常行为吗?
glg*_*lgl 13
是的。它确实与^D
确实有关:它只是停止当前read(2)
调用。
如果程序执行int rdbytes = read(fd, buffer, sizeof buffer);
并且您按^D
中间,则read()
返回缓冲区中当前读取的字节,返回它们的编号。线路终端也是如此;将\n
在年底总是交付。
因此,只有^D
在一行的开头或另一行之后的 a才^D
具有read()
返回的预期效果,发出0
EOF 信号。
Klo*_*lox 11
是的,这是正常行为。单个 Control-D 通常仅在它是该行的开头时才会出现。这以一个 Control-D 退出:
$ cat > foo.txt
bar
baz
^D
Run Code Online (Sandbox Code Playgroud)