昨天我读了这样的SO评论,它说在shell中(至少bash
)>&-
“具有与...相同的结果” >/dev/null
。
该评论实际上是将ABS指南作为其信息来源。但是那个消息来源说>&-
语法“关闭文件描述符”。
我不清楚关闭文件描述符并将其重定向到空设备这两个动作是否完全等效。所以我的问题是:是吗?
从表面上看,关闭描述符就像关闭一扇门,但是将其重定向到一个空设备则意味着陷入困境。这两个对我来说似乎并不完全相同,因为如果我看到一扇关闭的门,我不会尝试扔掉任何东西,但是如果我看到一扇敞开的门,我会假设我可以。
换句话说,我一直想知道是否>/dev/null
意味着cat mybigfile >/dev/null
将实际上处理文件的每个字节并将其写入/dev/null
而忘记了它。另一方面,如果外壳遇到一个封闭的文件描述符,我倾向于认为(但不确定)它将根本不写任何内容,尽管问题仍然在于是否cat
仍将读取每个字节。
这个评论说>&-
和>/dev/null
“ 应该 ”相同,但是对我来说却不是那么响亮的答案。我想有一个更权威的答案,参考或不参考标准或源核心。