[~]$ kill %123
bash: kill: %123: no such job
[~]$ kill %123 2>&1 > /dev/null
bash: kill: %123: no such job
バックグラウンドジョブを強制終了している間、すべての出力を無効にしたい。
最初の出力は予想通りです。しかし、2 番目の出力は予想通りではありません。
コマンドラインに示されているように、を に2>&1
リダイレクトするように追加し、 を使用してすべての出力を null デバイスにリダイレクトします。ただし、出力は引き続きターミナルに表示されます。stderr
stdout
> /dev/null
何か説明はありますか?
前もって感謝します。
更新された情報:
次のコマンドは期待どおりに動作します。
kill %123 > /dev/null 2>&1
答え1
出力リダイレクトはプロセスのプロパティです。したがって、2>&1でリダイレクトすると、現在stdout の出力を現在の TTY である stderr に出力する場合、次の > は stdout を /dev/null に設定し、stderr は TTY に設定されます。更新された情報では、最初に stdout を正しく設定しているため、両方とも /dev/null になります。