我注意到它|
用於將第一個命令的結果發送到另一個命令。我想殺死所有與名稱相符的進程。
這是 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
,它將kill
從標準輸入建立參數。例子:
$ pgrep bash | xargs echo
5514 22298 23079
答案2
這應該有效:
pkill name
我還建議閱讀手冊頁。
答案3
回答一般性問題而不是具體問題...
管道用於將一個程式的輸出傳遞為輸入到另一個程序。
看起來您正在嘗試將一個程式的輸出用作命令列參數到另一個程序,這是不同的。
為此,請使用命令替換。
例如,如果你想運行
sudo kill 5089 5105
你有一個pgrep name
輸出的命令5089 5105
你把它們放在一起就像
sudo kill $(pgrep name)