2014-05-09 43 views
1

是否ls -l /path/to/dir/*.extension 1>&- 2>&-关闭stdout和stderr(1>& - 2>& - )修改退出状态?

真的给退出状态为2即使存在与.extension文件还是我做一些错了吗?

我在做什么1>&- 2>&-我正在关闭命令的stdout和stderr,它不应该对命令的退出状态做任何事情!

作为一个希望以下总是工作很细:

ls -l /path/to/dir/*.extension &>/dev/null 

退出状态是0预期。

只是寻找这种行为的解释。

#UNDERSTANDING

在由西蒙·里希特给出答案的基础: 如果我们这样做

[email protected]:exp$ echo "Life" 1>&- 
-bash: echo: write error: Bad file descriptor 

它抛出错误,因为回声无法写入stdout和 如果我们这样做

[email protected]:exp$ echo "Life" 1>&- 2>&- 

我们甚至不会知道错误,直到我们检查的时间$?

+0

1>/dev/null 2>&1 – MLSC

回答

4

您正在关闭文件描述符,所以程序会在尝试写入它们时出错,并将错误传达给您。

如果将输出重定向到/dev/null,写入成功,并且ls不知道输出被丢弃。