Bash

為什麼我需要鍵入按 Enter 鍵才能完成此命令?

  • May 10, 2022

我是一個新的 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)正確嗎?

沒有任何問題,命令成功完成。

你看到了什麼:

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

你輸入了命令,點擊Enter。你的 shell 列印出你的提示,然後cat程序,非同步啟動,完成並吐出hi\n

空白行上閃爍的游標屬於上一行的提示符,但是echo命令中的換行符擾亂了您的顯示。

隨後的“輸入”只是給你一個新的提示。如果您輸入命令並按輸入鍵,該命令將執行。

引用自:https://unix.stackexchange.com/questions/701988