Me gustaría una breve explicación de la siguiente línea de comando:
grep -i 'abc' content 2>/dev/null
command-line
bash
redirect
stdout
Ingenuo
fuente
fuente

> /dev/null 2>&1y&> /dev/null2>&1una sintaxis anterior, por&>lo que no habría funcionado hace años, pero ambas son equivalentes.En resumen, redirige
stderr(fd 2) al agujero negro (descarta la salida del comando).Algunos casos de uso más comunes para la redirección:
Ejecutar
commanden segundo plano, descartarstdoutystderrEjecute
commandy agregue stdout y stderr a un archivo de registro.En Bash 4+, una forma más corta (pero menos legible) es funcional
fuente
> /dev/null 2>&1lugar de&> /dev/null?&>es nuevo en Bash 4, el primero es la forma tradicional, estoy muy acostumbrado (fácil de recordar).&> /dev/nullpuede no funcionar en algunos shells pero> / dev / null 2> & 1 funcionará en todos los shells compatibles con POSIX.fn>target, dondefnhay un número de archivo (0-2 típicamente, algunos programas definen más números) ytargetgeneralmente es un nombre de archivo, pero aquí hay otro número de archivo, con el prefijo&cual es el sintaxis para "Quiero un número de archivo en lugar de un nombre de archivo"./dev/nullse trata como un agujero negro en Linux / Unix, por lo que puede poner cualquier cosa en esto, pero no podrá recuperarlo/dev/null.Además,
2>significa que está redirigiendo (es decir>) el stderr (es decir2) hacia el agujero negro (es decir/dev/null)Tu comando es:
No intente terminar con otra barra diagonal como esta -
2>/dev/null/(no es un directorio).fuente
El contenido grep -i 'abc' generará una salida que se mostrará en su consola, incluidos los errores.
Si especifica
2>/dev/null, filtrará los errores para que no se envíen a su consola.Más detalladamente: 2 representa el descriptor de error, que es donde se escriben los errores. Por defecto se imprimen en la consola.
\>redirige la salida al lugar especificado, en este caso/dev/null/dev/nulles el dispositivo estándar de Linux donde envía la salida que desea ignorar.fuente