パイプ演算子を使用するのはなぜ機能しないのですか? [コピー]

パイプ演算子を使用するのはなぜ機能しないのですか? [コピー]

私が一般的に使用するのは、pidofプロセスのpidを取得してKILL -SIGTERM <pid>殺すことです。

パイプは、あるコマンドの出力を別のコマンドの入力として使用すると仮定されます。

それでは、次のコマンドが機能しないのはなぜですか?

pidof firefox | kill -SIGTERM

ベストアンサー1

パイプは、あるコマンドの出力を別のコマンドの入力として使用すると仮定されます。

これは正確ですが、kill標準入力のどの入力も受け入れません。代わりに、コマンドライン引数として指定する必要があります。

kill -SIGTERM "$(pidof firefox)"

または:

pidof firefox | xargs kill

$(これはシェル内のコマンド拡張ですが、xargs外部です。

ただし、これらの方法には、pidが複数ある場合やpidがない場合に実行する操作など、極端な場合がよくあります。これがpkillが存在する理由です。

pkill -TERM firefox

おすすめ記事