![为什么我不能执行 ls -a 1>&-?](https://linux22.com/image/96539/%E4%B8%BA%E4%BB%80%E4%B9%88%E6%88%91%E4%B8%8D%E8%83%BD%E6%89%A7%E8%A1%8C%20ls%20-a%201%3E%26-%EF%BC%9F.png)
为什么我们不能直接关闭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
我知道在这里关闭标准输出没有意义,但我想知道为什么不允许这样做?
答案1
显然关闭stdout并没有失败,相反,它成功了,因为对其进行写入失败,从错误信息可以看出。编辑:为了澄清我的答案,首先告诉外壳程序关闭文件描述符,然后程序ls
尝试写入它。这就是错误消息的来源。