为什么我需要输入按 Enter 键才能完成此命令?

为什么我需要输入按 Enter 键才能完成此命令?

我是一个新的 Linux 用户,我正在做一些实验并试图理解流程替代。我相信我已经对此有了基本的了解。但这里有一个案例,我不知道为什么。我在 Ubuntu 20.04 上使用 Bash。

echo hi只是将hi带有换行符的字符串发送到标准输出。

root@u2004:~# echo hi | od -a
0000000   h   i  nl
0000003
root@u2004:~#

cat可以从管道中读取其标准输入,并将其读取的内容发送到管道。

root@u2004:~# echo hi | cat
hi
root@u2004:~# echo hi | cat | od -a
0000000   h   i  nl
0000003
root@u2004:~#

据我了解,该命令echo hi > >(cat)还将cat从其标准输入中读取(并打印到控制台)。但是当我运行它时,我得到了这个:

root@u2004:~# echo hi > >(cat)
root@u2004:~# hi
<the cursor blinks at this location>

我必须按下该Enter键才能完成命令。

root@u2004:~# echo hi >>(猫)
root@u2004:~#嗨
Enter
根@u2004:~#

为什么会有这种行为?我对命令的理解echo hi > >(cat)正确吗?

答案1

没有任何问题,命令成功完成。

你看到了什么:

root@u2004:~# echo hi > >(cat)
root@u2004:~# hi
<the cursor blinks at this location>

您输入了命令,点击Enter。您的 shell 打印出提示符,然后cat异步启动的进程完成并输出hi\n.

空行上闪烁的光标属于上一行的提示,但echo命令中的换行符扰乱了显示。

随后的“按 Enter”只会给您一个新的提示。如果输入命令并按 Enter 键,该命令将运行。

相关内容