He notado que |
se usa para enviar resultados del primer comando al otro. Me gustaría matar todos los procesos que coinciden con un nombre.
Esto es lo que normalmente hace pgrep:
$ pgrep name
5089
5105
Y múltiples argumentos parecen funcionar con kill
:
sudo kill 5089 5105
Pero esto está mal:
pgrep name | kill
Entonces, ¿cómo hacerlo correctamente?
pkill
. Y si eso no existía,kill $(pgrep ...)
.man pgrep
. El botón de voto negativo dice que es para cuando una pregunta no muestra ningún esfuerzo de investigación, y no pude ver ninguna en su pregunta. Lo siento si eso pareció duro.Respuestas:
Prueba esto:
Si lo usa
pgrep name | kill
, la salida depgrep name
se alimenta a stdin dekill
. Porquekill
no lee argumentos de stdin, por lo que esto no funcionará.Utilizando
xargs
, generará argumentos parakill
desde stdin. Ejemplo:fuente
Esto debería funcionar:
También sugiero leer la página del manual.
fuente
Para responder a lo general en lugar de lo específico ...
Las tuberías son para pasar la salida de un programa como entrada a otro programa.
Parece que está intentando usar la salida de un programa como argumentos de línea de comando para otro programa, que es diferente.
Para hacer eso, use la sustitución de comandos .
Por ejemplo si quieres correr
Y tienes un comando
pgrep name
que genera5089 5105
Los pones juntos como
fuente