最初のコマンドの結果を別のコマンドに送信するために使用されていることに気付きました|
。名前に一致するすべてのプロセスを終了したいと思います。
通常、pgrep は次のことを行います。
$ pgrep name
5089
5105
複数の引数は次のように動作するようですkill
:
sudo kill 5089 5105
しかし、これは間違いです。
pgrep name | kill
では、どうすれば適切に実行できるのでしょうか?
答え1
これを試して:
pgrep name | xargs kill
を使用するとpgrep name | kill
、 の出力がpgrep name
の stdin に送られますkill
。はkill
stdin から引数を読み取らないため、これは機能しません。
を使用するとxargs
、stdin から の引数が構築されますkill
。例:
$ pgrep bash | xargs echo
5514 22298 23079
答え2
これは動作するはずです:
pkill name
man ページを読むこともお勧めします。
答え3
具体的な質問ではなく、一般的な質問にお答えします。
パイプは、あるプログラムからの出力を渡すためのものです。入力別のプログラムに。
あるプログラムの出力を次のように使用しようとしているようですコマンドライン引数別のプログラムに、それは異なります。
そのためには、コマンド置換。
例えば、実行したい場合
sudo kill 5089 5105
pgrep name
そして、出力するコマンドがあります5089 5105
これらを組み合わせると
sudo kill $(pgrep name)