Cuando corres:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
Básicamente, solo está redirigiendo la salida de Stream 1 (es decir stdout
) a /dev/null
.
Esto está bien cuando desea redirigir la salida producida por la ejecución normal de un programa. Sin embargo, en caso de que también desee redirigir la salida causada por todos los errores, advertencias o fallas, también debe redirigir la stderr
secuencia o Error estándar a /dev/null
.
Una forma de hacerlo es anteponer el número de la secuencia que desea redirigir al operador de redirección, de >
esta manera:Command 2> /dev/null
Por lo tanto, su comando se vería así:
ping -q -c 1 google.com > /dev/null 2> /dev/null && echo online || echo offline
Pero tenga en cuenta que ya hemos redirigido una transmisión a /dev/null
. ¿Por qué no simplemente a cuestas en la misma redirección? Bash nos permite hacer esto especificando el número de transmisión al que redirigir. 2>&1
.
Observe el &
carácter después del operador de redirección. Esto le dice al shell que lo que aparece a continuación no es un nombre de archivo, sino un identificador para la secuencia de salida.
ping -q -c 1 google.com > /dev/null 2>&1 echo online || echo offline
Tenga cuidado con los operadores de redireccionamiento, su orden es muy importante. Si fuera a redirigir en el orden incorrecto, obtendrá resultados inesperados.
Otra forma en la que puede lograr un silencio completo es redirigiendo todas las secuencias de salida para /dev/null
usar este acceso directo: &>/dev/null
(o redirigir a un archivo de registro con &>/path/to/file.log
).
Por lo tanto, escriba su comando como:
ping -q -c 1 google.com &> /dev/null && echo online || echo offline
&>/dev/null
lo es. ¡Gracias a todos por la ayuda instantánea!Be careful with the redirection operators, their order matters a lot.
, pero no2>&1
Debe redirigir tanto la salida estándar (
>
o1>
) como el error estándar (2>
):o, redirigir uno al otro:
fuente
Ejemplos
Acelerando el ping
Dependiendo de su
ping
implementación, puede estar limitado a un solo recuento-c 1
. Algunas implementaciones te permitirán ir por debajo de esto, pero esencialmente tienes que esperar a que las malas búsquedas terminen. Entonces, en lugar de usar,ping
es posible que desee usarfing
en su lugar.lentitud del fallo del ping
Fing es mucho más rápido para fallar
fuente
time
comando que calcular manualmente la diferencia horaria condate
:time { fing -p googleadf.com > /dev/null 2>&1 && echo online || echo offline; }
date
. Es más fácil, en mi opinión, que alguien más lea el resultado generado.