Io-Redirection

為什麼我不能執行 ls -a 1>&-?

  • October 16, 2016

為什麼我們不能只關閉stdout一個程序?

我正在嘗試重定向命令。以下作品:

ls -a 0>&-
ls -a 2>&-

這意味著關閉stdinstderr過程ls -a。但是為什麼關閉stdout失敗?我正進入(狀態

aniket@aniket-Compaq-610:~/Downloads$ ls -a 1>&-
ls: write error: Bad file descriptor

我知道在這里關閉標準輸出沒有意義,但我想知道為什麼不允許這樣做?

顯然關閉stdout並沒有失敗,相反,它成功是因為寫入失敗,從錯誤資訊中可以看出。編輯:為了澄清我的答案,發生的事情是您首先告訴外殼程序關閉文件描述符,然後ls程序嘗試寫入它。這就是錯誤消息的來源。

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