Io-Redirection
為什麼我不能執行 ls -a 1>&-?
為什麼我們不能只關閉
stdout
一個程序?我正在嘗試重定向命令。以下作品:
ls -a 0>&- ls -a 2>&-
這意味著關閉
stdin
和stderr
過程ls -a
。但是為什麼關閉stdout
失敗?我正進入(狀態aniket@aniket-Compaq-610:~/Downloads$ ls -a 1>&- ls: write error: Bad file descriptor
我知道在這里關閉標準輸出沒有意義,但我想知道為什麼不允許這樣做?
顯然關閉stdout並沒有失敗,相反,它成功是因為寫入失敗,從錯誤資訊中可以看出。編輯:為了澄清我的答案,發生的事情是您首先告訴外殼程序關閉文件描述符,然後
ls
程序嘗試寫入它。這就是錯誤消息的來源。