为什么终止后台作业时 I/O 重定向不起作用?

为什么终止后台作业时 I/O 重定向不起作用?
[~]$ 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。

相关内容