[~]$ kill %123
bash: kill: %123: no such job
[~]$ kill %123 2>&1 > /dev/null
bash: kill: %123: no such job
我想在终止后台作业期间禁用所有输出。
第一个输出是预期的。然而,第二个输出却不是。
如命令行所示,我添加了“2>&1
重定向stderr
到” stdout
,并使用> /dev/null
“将所有输出重定向到空设备”。但输出仍然显示在终端上。
有什么解释吗?
提前致谢。
更新信息:
以下命令按预期工作:
kill %123 > /dev/null 2>&1
答案1
输出重定向是进程的一个属性。因此,当使用 2>&1 重定向时,这会设置当前的将 stdout 输出到 stderr(即当前 TTY),然后以下 > 将 stdout 设置为 /dev/null,从而将 stderr 设置为 TTY。在更新的信息中,您首先正确设置了标准输出,因此两者最终都是 /dev/null。