Bash
為什麼我需要鍵入按 Enter 鍵才能完成此命令?
我是一個新的 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
命令中的換行符擾亂了您的顯示。隨後的“輸入”只是給你一個新的提示。如果您輸入命令並按輸入鍵,該命令將執行。