Puede man grepleer la página del manual de referencia para el comando, o para obtener más información sobre ciertos comandos (inc. Grep) puede info grep... es decir. su sistema tiene documentación que a menudo es muy útil.
guiverc
12
grep -v "grep"a menudo se usa para filtrar grep mientras se enumeran los procesos y eso generalmente involucra 3 tuberías, aunque, por supuesto, hay mejores métodos como los pgrepque permiten mucha menos "plomería". Ver unix.stackexchange.com/q/74185/85039
Sergiy Kolodyazhnyy
13
Eso lo hace. Estoy llamando a mi rootkit grep.
Joshua
Normalmente se usa en un contexto no relacionado con la seguridad, como ps aux | grep fubar | grep -v grepdónde fubares algo que estoy desarrollando, que ha dejado de responder y cuya identificación quiero encontrar para poder matarlo. Suponga que hay dos de ellos, entonces killalles inapropiado.
nigel222
Respuestas:
69
grep -v "grep"toma entrada línea por línea, y genera solo las líneas en las que grepno aparece. Sin -v, sería en el que las líneas de salida sólo grepno aparecerá. Ver man greppara más detalles.
En lo que respecta a la greputilidad en sí misma, no es importante que el patrón que se le greppasa como argumento sea el mismo que su nombre. Pero en la mayoría de los casos donde grep -v greprealmente aparece, esto no es una coincidencia.
grep -v grep(o grep -v 'grep'o grep -v "grep") a menudo aparece en el lado derecho de una tubería cuyo lado izquierdo es un pscomando. Eso es probablemente donde lo has visto. Por ejemplo, podría estar buscando programas en ejecución cuyos nombres, rutas o argumentos de línea de comandos sugieran que están relacionados con Xfce:
ek@Io:~$ ps x | grep xfce
2955?Ssl0:10 xfce4-power-manager
2958? S 0:00/usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
31901 pts/1 S+0:00 grep --color=auto xfce
Mi grepcomando se mostró en la salida, pero no es lo que estoy buscando. Estoy buscando información sobre los procesos que ya se estaban ejecutando cuando examiné lo que se estaba ejecutando, no el proceso que solo se está ejecutando debido a mi esfuerzo por examinar lo que se está ejecutando.
Una forma común de eliminar esta distracción es agregar otra tubería a grep -v grep:
ek@Io:~$ ps x | grep xfce | grep -v grep
2955?Ssl0:10 xfce4-power-manager
2958? S 0:00/usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
grepsin -Ftrata su patrón como una expresión regular en lugar de una cadena fija . Entonces, otro enfoque es escribir una expresión regular que coincida exactamente xfcepero que se escriba de manera diferente. Por ejemplo:
ek@Io:~$ ps x | grep '[x]fce'2955?Ssl0:10 xfce4-power-manager
2958? S 0:00/usr/lib/x86_64-linux-gnu/xfce4/xfconf/xfconfd
Esto funciona porque [x]es una clase de caracteres que coincide exactamente con la letra x.
Un inconveniente de esos métodos populares es que filtrarán las líneas que contienen grepincluso cuando no son el grepcomando que acaba de ejecutar usted mismo. Es posible que ni siquiera sean grepcomandos, solo comandos cuyos nombres, rutas o argumentos de línea de comandos contienengrep . Entonces, como ha señalado Sergiy Kolodyazhnyy , a menudo ninguna de esas formas (ni ningún otro enfoque que implique canalizar la salida de ps) es realmente ideal y, como mencionó Nic Hartley , otras formas a menudo se usan pgrep. Por ejemplo:
También vale la pena mencionar pgreppara otra alternativa aps | grep
La demanda del Fondo de Mónica el
8
grep --helpnos dice qué -vbandera hace:
-v,--invert-match select non-matching lines
Puede usar la -vbandera para imprimir invierte la coincidencia; es decir, solo coincide con aquellas líneas que no contienen la palabra dada. Por ejemplo, imprima todas las líneas que no contienen la barra de palabras:
man grep
leer la página del manual de referencia para el comando, o para obtener más información sobre ciertos comandos (inc. Grep) puedeinfo grep
... es decir. su sistema tiene documentación que a menudo es muy útil.grep -v "grep"
a menudo se usa para filtrar grep mientras se enumeran los procesos y eso generalmente involucra 3 tuberías, aunque, por supuesto, hay mejores métodos como lospgrep
que permiten mucha menos "plomería". Ver unix.stackexchange.com/q/74185/85039grep
.ps aux | grep fubar | grep -v grep
dóndefubar
es algo que estoy desarrollando, que ha dejado de responder y cuya identificación quiero encontrar para poder matarlo. Suponga que hay dos de ellos, entonceskillall
es inapropiado.Respuestas:
grep -v "grep"
toma entrada línea por línea, y genera solo las líneas en las quegrep
no aparece. Sin-v
, sería en el que las líneas de salida sólogrep
no aparecerá. Verman grep
para más detalles.En lo que respecta a la
grep
utilidad en sí misma, no es importante que el patrón que se legrep
pasa como argumento sea el mismo que su nombre. Pero en la mayoría de los casos dondegrep -v grep
realmente aparece, esto no es una coincidencia.grep -v grep
(ogrep -v 'grep'
ogrep -v "grep"
) a menudo aparece en el lado derecho de una tubería cuyo lado izquierdo es unps
comando. Eso es probablemente donde lo has visto. Por ejemplo, podría estar buscando programas en ejecución cuyos nombres, rutas o argumentos de línea de comandos sugieran que están relacionados con Xfce:Mi
grep
comando se mostró en la salida, pero no es lo que estoy buscando. Estoy buscando información sobre los procesos que ya se estaban ejecutando cuando examiné lo que se estaba ejecutando, no el proceso que solo se está ejecutando debido a mi esfuerzo por examinar lo que se está ejecutando.Una forma común de eliminar esta distracción es agregar otra tubería a
grep -v grep
:grep
sin-F
trata su patrón como una expresión regular en lugar de una cadena fija . Entonces, otro enfoque es escribir una expresión regular que coincida exactamentexfce
pero que se escriba de manera diferente. Por ejemplo:Esto funciona porque
[x]
es una clase de caracteres que coincide exactamente con la letrax
.Un inconveniente de esos métodos populares es que filtrarán las líneas que contienen
grep
incluso cuando no son elgrep
comando que acaba de ejecutar usted mismo. Es posible que ni siquiera seangrep
comandos, solo comandos cuyos nombres, rutas o argumentos de línea de comandos contienengrep
. Entonces, como ha señalado Sergiy Kolodyazhnyy , a menudo ninguna de esas formas (ni ningún otro enfoque que implique canalizar la salida deps
) es realmente ideal y, como mencionó Nic Hartley , otras formas a menudo se usanpgrep
. Por ejemplo:-a
muestra la línea de comando completa. Omita para mostrar solo el número de identificación del proceso.-f
busca en la línea de comando completa. Omita para buscar solo los nombres.fuente
pgrep
para otra alternativa aps | grep
grep --help
nos dice qué-v
bandera hace:Puede usar la
-v
bandera para imprimir invierte la coincidencia; es decir, solo coincide con aquellas líneas que no contienen la palabra dada. Por ejemplo, imprima todas las líneas que no contienen la barra de palabras:( leer más ... )
fuente