Cuando busco algún proceso que no existe, por ejemplo
$ ps aux | grep fnord
wayne 15745 0.0 0.0 13580 928 pts/6 S+ 03:58 0:00 grep fnord
Obviamente no me importa grep, ¡eso tiene tanto sentido como buscar el ps
proceso!
¿Cómo puedo evitar que grep aparezca en los resultados?
Respuesta1
Resulta que se ha encontrado una solución enllavero.
$ ps aux | grep "[f]nord"
Al colocar corchetes alrededor de la letra y comillas alrededor de la cadena, busca la expresión regular, que dice: "Encuentre el carácter 'f' seguido de 'nord'".
Pero como puso los corchetes en el patrón, 'f' ahora va seguida de ']', por lo que grep
no aparecerá en la lista de resultados. ¡Bien!
Respuesta2
Otra opción que uso (especialmente para ver si se está ejecutando un proceso) es el pgrep
comando. Esto buscará un proceso coincidente, pero no incluirá una línea grep para la búsqueda. Me gusta porque es una forma rápida de buscar, sin hacer regexing ni escapar de nada.
pgrep fnord
Además, para imprimir tanto el ID del proceso como el nombre del proceso que coincide, utilice (graciasfemme)
pgrep -l fnord
Respuesta3
La solución ideal es la que presenta BriGuy
pgrep fnord
Pero si no desea hacer eso, puede simplemente excluir todas las líneas que coincidan congrepcon:
ps aux | grep -v grep | grep "fnord"
Respuesta4
En zsh, grep fnord =(ps aux)
.
La idea es, primero ejecutar ps aux
, poner el resultado en un archivo y luego usarlo grep
en ese archivo. Solo que no tenemos un archivo, ya que usamos la "sustitución de procesos" de zsh.
Para ilustrar, intente
ps aux > ps.txt
grep fnord ps.txt
rm ps.txt
El resultado debería ser el mismo.
Comentario generalen algunas de las otras respuestas. Algunos son demasiado complicados y/o largos de escribir. No se trata sólo de tener razón, sino que también debe ser utilizable. Pero eso no significa que algunas de esas soluciones sean malas; Sólo que deben estar envueltos dentro de una mini-UI para que sean utilizables.