Ls "${VMX_DIR}" | grep -q delta > /dev/null 2>&1;
Il répertorie les fichiers dans VMX_DIR, puis les redirige vers grep mais qu'est-ce que cela fait?
Ls "${VMX_DIR}" | grep -q delta > /dev/null 2>&1;
Il répertorie les fichiers dans VMX_DIR, puis les redirige vers grep mais qu'est-ce que cela fait?
Cela vérifie s'il existe un fichier ou un chemin contenant delta
dans ${VMX_DIR}
puis renvoie le résultat via le code de sortie de grep, car grep renverra un code de sortie normal de 0 s'il trouve une correspondance, et un code d'échec de 1 s'il ne le fait pas. C'est utile dans les conditionnels bash.
Voici ce qu'il fait déclaration par déclaration :
ls "${VMX_DIR}"
Liste le contenu du répertoire stocké dans le chemin ${VMX_DIR}
| grep -q delta
Pipe les résultats à grep, recherchant les résultats de la liste du répertoire pour delta
en ignorant toute sortie sur la sortie standard.
> /dev/null 2>&1;
Redirige la sortie standard vers /dev/null
pour qu'elle ne soit pas imprimée. Le 2>&1
indique à bash de rediriger la sortie d'erreur vers la sortie standard (qui va maintenant vers /dev/null
). Le point-virgule termine simplement la ligne.
De la page de manuel de grep
:
-q, --quiet, --silent
Silencieux ; ne rien écrire sur la sortie standard. Quitter immédiatement avec un statut zéro si une correspondance est trouvée, même si une erreur a été détectée. Voir également l'option -s ou --no-messages.
Fondamentalement, cela cherche à voir s'il existe un fichier contenant delta
et à renvoyer true
s'il existe ou false
s'il n'existe pas. Ce qu'il fait réellement avec cette valeur de vérité est à deviner à partir de ce petit extrait que vous avez là.
La dernière partie redirige la sortie standard et les erreurs standard vers /dev/null - c'est-à-dire que toute sortie de la commande grep (erreurs, avertissements ou correspondances) est supprimée. Ce type de commande peut être utile pour effectuer une vérification simple sans sortie - La variable $?
sera zéro ou non zéro en fonction de la réussite ou non de la commande grep
.
Vous pourriez simplifier ce code en remplaçant > /dev/null 2>&1
par &>/dev/null
, qui dans ce cas fera la même chose : Rediriger tous les flux de sortie vers /dev/null
.
Voir Redirection E/S pour plus de détails.
SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.