Lorsque vous exécutez:
ping -q -c 1 google.com > /dev/null && echo online || echo offline
Vous redirigez essentiellement la sortie du flux 1 (c'est stdout
-à- dire ) vers /dev/null
.
C'est très bien lorsque vous souhaitez rediriger la sortie produite par l'exécution normale d'un programme. Cependant, si vous souhaitez également rediriger la sortie causée par toutes les erreurs, avertissements ou échecs, vous devez également rediriger le stderr
ou le flux d'erreur standard vers /dev/null
.
Une façon de procéder consiste à ajouter le numéro du flux que vous souhaitez rediriger à l'opérateur de redirection, >
comme ceci:Command 2> /dev/null
Par conséquent, votre commande ressemblerait à:
ping -q -c 1 google.com > /dev/null 2> /dev/null && echo online || echo offline
Mais notez que nous avons déjà redirigé un flux vers /dev/null
. Pourquoi ne pas simplement se greffer sur la même redirection? Bash nous permet de le faire en spécifiant le numéro de flux vers lequel rediriger. 2>&1
.
Remarquez le &
caractère après l'opérateur de redirection. Cela indique au shell que ce qui apparaît ensuite n'est pas un nom de fichier, mais un identifiant pour le flux de sortie.
ping -q -c 1 google.com > /dev/null 2>&1 echo online || echo offline
Attention aux opérateurs de redirection, leur commande est très importante. Si vous deviez rediriger dans le mauvais ordre, vous vous retrouverez avec des résultats inattendus.
Vous pouvez également atteindre un silence complet en redirigeant tous les flux de sortie vers /dev/null
ce raccourci: &>/dev/null
(ou redirigez vers un fichier journal avec &>/path/to/file.log
).
Par conséquent, écrivez votre commande comme suit:
ping -q -c 1 google.com &> /dev/null && echo online || echo offline
&>/dev/null
c'est ça. Merci à tous pour l'aide instantanée!Be careful with the redirection operators, their order matters a lot.
, mais vous n'avez pas inclus d'exemple d'utilisation2>&1
Vous devez rediriger la sortie standard (
>
ou1>
) et l'erreur standard (2>
):ou, redirigez l'un vers l'autre:
la source
Exemples
Accélérer le ping
Selon votre
ping
implémentation, vous pouvez être limité à un seul décompte-c 1
. Certaines implémentations vous permettront d'aller en dessous, mais vous devez essentiellement attendre que les mauvaises recherches expirent. Donc, au lieu d'utiliser,ping
vous voudrez peut-être utiliser à lafing
place.lenteur de l'échec du ping
le doigt est beaucoup plus rapide à échouer
la source
time
commande plutôt que de calculer manuellement le décalage horaire avecdate
:time { fing -p googleadf.com > /dev/null 2>&1 && echo online || echo offline; }
date
. C'est plus facile, OMI, pour quelqu'un d'autre de lire la sortie générée.