[~]$ 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。