Non je redirige la sortie de ping.
Au lieu d'écrire sur l'écran, j'écris dans un périphérique virtuel, de sorte que rien ne s'affiche à l'écran dans la console. « /dev/null » a été spécialement inventé à cet effet. Ainsi, dans la console je ne verrai QUE « Ping réussi » ou « Ping échoué », et aucun autre texte ayant été produit par ping. C'est juste une mesure esthétique en somme j'aurais pu ne pas l'écrire.
Pour essayer tu peux faire :
ping -c2 $adresse >~/monfichier 2>&1
Tu auras dans ton répertoire utilisateur un nouveau fichier nommé « monfichier » et qui contiendra la sortie de la commande ping.
Donc tu peux en gros traduire « >/dev/null » par « écrire
nulle part ».
D'autre part la commande ping a un code d'erreur de sortie. Pour t'en convraincre tu peux faire un « echo $? » juste après la commande pour voir quel code d'erreur elle a renvoyé.
Ping en particulier renvoie un code 0 si le ping a réussi, et 1 ou plus si le ping a échoué.
0 est considéré par le builtin « if » comme un test réussi, et 1 ou plus comme un test échoué. Il « lit » donc (on dit plutôt qu'il « évalue ») en quelque sorte le code d'erreur renvoyé par ping, et exécute les commandes en fonction de celui ci.
J'aurais pu écrire :
ping -c2 $adresse >/dev/null 2>&1
if [ $? -eq 0 ]; then
echo "Ping réussi"
else
echo "Ping échoué"
fi
Mais bon, autant faire au plus court 🙂