我看到這個問題: Shell redirection i/o order。Shell IO重定向命令,管版
但我還有一個問題。如果此行未能重定向錯誤輸出到file
:
ls -xy 2>&1 1>file
那麼,爲什麼這條線可以重定向錯誤輸出到grep
?
ls -xy 2>&1 | grep ls
我想知道它是如何實際上被下運行。
據說2>&1
將stderr重定向到stdout的副本。 「stdout的副本」是什麼意思?什麼是實際複製?
終端註冊自己(通過操作系統)發送和接收通過它創建的進程的標準流,對吧?其他重定向是否也通過操作系統(我不這麼認爲,因爲終端本身可以處理這個問題)?
stdout的副本:它是_duplicated_,因爲它使用'dup'。 –
'dup' ??你的意思是堆棧操作?在哪個堆棧上? –
'dup'是一個系統調用:'man 2 dup'。 [或這裏](http://pubs.opengroup.org/onlinepubs/9699919799/functions/dup.html)。 –