Zauważyłem, że |
służy do przesyłania wyników pierwszego polecenia do drugiego. Chciałbym zabić wszystkie procesy, które pasują do nazwy.
Oto co zwykle robi pgrep:
$ pgrep name
5089
5105
Wydaje się, że działa wiele argumentów kill
:
sudo kill 5089 5105
Ale to źle:
pgrep name | kill
Jak to zrobić poprawnie?
pkill
. A jeśli to nie istniejekill $(pgrep ...)
.man pgrep
. Przycisk downvote mówi, że dzieje się tak, gdy pytanie nie pokazuje wysiłku badawczego, a ja nie widziałem żadnego w twoim pytaniu. Przepraszam, jeśli to wydawało się trudne.Odpowiedzi:
Spróbuj tego:
Jeśli używasz
pgrep name | kill
, wyjściepgrep name
jest przesyłane do standardowegokill
. Ponieważkill
nie odczytuje argumentów ze standardowego wejścia, więc to nie zadziała.Używając
xargs
, zbuduje argumentykill
ze standardowego wejścia. Przykład:źródło
To powinno działać:
Sugeruję również przeczytanie strony podręcznika.
źródło
Aby odpowiedzieć na ogólne, a nie szczegółowe ...
Rury służą do przekazywania danych wyjściowych z jednego programu jako danych wejściowych do innego programu.
Wygląda na to, że próbujesz użyć danych wyjściowych jednego programu jako argumentów wiersza poleceń innego programu, który jest inny.
Aby to zrobić, użyj podstawiania poleceń .
Na przykład, jeśli chcesz uruchomić
I masz polecenie,
pgrep name
które wydaje5089 5105
Złożyłeś je razem
źródło