我是一个新的 Linux 用户,我正在做一些实验并试图理解Process Substitution。我相信我已经对它有了一个基本的了解。但这里有一个我不知道为什么的案例。我在 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 > >(cat) root@u2004:~# 你好 Enter 根@u2004:~#
为什么会有这种行为?我对命令的理解echo hi > >(cat)
正确吗?
没有任何问题,命令成功完成。
你看到了什么:
你输入了命令,点击Enter。你的 shell 打印出你的提示,然后
cat
进程,异步启动,完成并吐出hi\n
。空白行上闪烁的光标属于上一行的提示符,但是
echo
命令中的换行符扰乱了您的显示。随后的“回车”只是给你一个新的提示。如果您输入命令并按回车键,该命令将运行。