Eso no tiene nada que ver grep
, es porque la tubería |
redirige el flujo de salida estándar stdout
mientras que los Permission denied
mensajes están en el flujo de error estándar stderr
. Puede lograr el resultado que desea combinando las secuencias usando 2>&1
(redirigir la secuencia cuyo descriptor de archivo es 2
a la secuencia cuyo descriptor de archivo es 1
) de modo que stderr
además stdout
se canalice a la entrada del comando grep
find / -name libGL.so.1 2>&1 | grep -v 'denied'
pero sería más habitual simplemente descartar stderr
por completo redirigiéndolo a/dev/null
find / -name libGL.so.1 2>/dev/null
Usando | & en lugar de 2> & 1 |
Si echas un vistazo a la página de manual de Bash, es probable que notes esta propaganda:
Si |&
se usa, el error estándar de comando se conecta a la entrada estándar de command2 a través de la tubería; es taquigrafía para 2>&1 |
.
Por lo tanto, también puede usar esta construcción si desea unir STDERR y STDOUT:
find / -name libGL.so.1 |& grep -v 'denied'
/foo/bar/denied/libGL.so.1
, combinarstdout
ystderr
luego filtrar ocultaría el resultado