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>&1
y&> /dev/null
2>&1
una 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
command
en segundo plano, descartarstdout
ystderr
Ejecute
command
y 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>&1
lugar de&> /dev/null
?&>
es nuevo en Bash 4, el primero es la forma tradicional, estoy muy acostumbrado (fácil de recordar).&> /dev/null
puede no funcionar en algunos shells pero> / dev / null 2> & 1 funcionará en todos los shells compatibles con POSIX.fn>target
, dondefn
hay un número de archivo (0-2 típicamente, algunos programas definen más números) ytarget
generalmente 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/null
se 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/null
es el dispositivo estándar de Linux donde envía la salida que desea ignorar.fuente