|
は、最初のコマンドの結果を別のコマンドに送信するために使用されます。名前に一致するすべてのプロセスを強制終了したい。
これは、pgrepが通常行うことです。
$ pgrep name
5089
5105
そして、複数の引数がkill
で機能するようです:
Sudo kill 5089 5105
しかし、これは間違っています:
pgrep name | kill
それを正しく行うにはどうすればよいですか?
これを試して:
pgrep name | xargs kill
pgrep name | kill
を使用する場合、pgrep name
の出力はkill
のstdinにフィードされます。 kill
は標準入力から引数を読み取らないため、これは機能しません。
xargs
を使用して、stdinからkill
の引数を作成します。例:
$ pgrep bash | xargs echo
5514 22298 23079
これはうまくいくはずです:
pkill name
また、manページを読むことをお勧めします。
特定ではなく一般に答えるために...
パイプは、あるプログラムからの出力をinputとして別のプログラムに渡すためのものです。
あるプログラムの出力を別のプログラムへのコマンドライン引数として使用しようとしているようですが、これは異なります。
これを行うには、 コマンド置換 を使用します。
たとえば、実行したい場合
Sudo kill 5089 5105
そして、あなたはpgrep name
を出力するコマンド5089 5105
を持っています
あなたはそれらを一緒にまとめます
Sudo kill $(pgrep name)