為什麼終止後台作業時 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。

相關內容