Que signifient les « &&
», « \
» et « -
» à la fin des commandes bash?
En particulier, je suis tombé sur la combinaison suivante de lignes qui sont censées ajouter des clés publiques au gestionnaire de paquets aptitude d'Ubuntu, à quoi servent ces caractères ici?
gpg --keyserver keyserver.ubuntu.com --recv 26C2E075 && \ gpg --export --armor 26C2E075 | sudo apt-key add - && \ mise à jour sudo apt-get
Réponses:
"&&" est utilisé pour chaîner des commandes, de sorte que la commande suivante est exécutée si et seulement si la commande précédente s'est terminée sans erreur (ou, plus précisément, se termine avec un code retour de 0).
"\" à lui seul à la fin d'une ligne est un moyen de concaténer des lignes ensemble. Donc, les deux lignes suivantes:
sont traités exactement de la même manière que si la ligne était écrite comme une seule ligne:
"-" est un argument de ligne de commande sans fonction bash spécifique. La manière exacte dont il est géré dépend de la commande exécutée (dans ce cas, apt-key ). Selon le contexte, il est généralement utilisé pour indiquer « lire les données de stdin plutôt que d'un fichier » ou « traiter le reste de la ligne en tant que données plutôt qu'en tant qu'arguments de ligne de commande ».
la source
la source
&& est le ET logique:
&& est un moyen d'exprimer le ET logique , ce qui signifie que l'expression entière n'est vraie que si ses deux côtés sont vrais. En logique, on dit que la déclaration entière (P&Q) n'est vraie que lorsque P et Q sont vrais.
En conséquence, les ordinateurs traitent généralement P&Q comme une évaluation de court-circuit . Donc, puisque la déclaration entière ne sera vraie que si P et Q sont tous deux vrais, alors si P est faux, la déclaration Q n'est pas évaluée . Fondamentalement, les ordinateurs sont paresseux (efficaces) et ne prennent pas la peine d'évaluer Q s'ils n'en ont pas trop. Cela vaut également pour OU logique, voir le lien précédent.
Les trois contextes de && dans Bash:
1) Utilisation de l'évaluation des courts-circuits avec l'état de sortie d'une commande:
chaque commande a un état de sortie. Si une commande contient une erreur, son état de sortie est différent de zéro. Donc, si l'état de sortie est différent de zéro et que && est utilisé pour enchaîner les commandes dans une instruction, les commandes ultérieures ne seront pas évaluées (exécutées) si la précédente n'avait pas l'état de sortie 0 (Vrai). Cela est dû à l'évaluation des courts-circuits. Donc si vous avez:
Q ne sera pas exécuté si P n'était pas vrai (si P sort avec un statut différent de 0, ce n'est pas vrai). Tout comme:
make ne sera pas exécuté si configure avait une erreur, n'était pas vrai. Donc, en gros, cela finit par être un moyen d'écrire la déclaration if then:
Gardez à l'esprit que dans la plupart des contextes, 0 est faux, mais pas lorsqu'il s'agit d'un statut de sortie.
2) && Peut être utilisé dans la commande de test [[]] intégrée de Bash:
&& Peut également être utilisé à l'intérieur de la commande de test intégrée dans bash [[]] pour combiner des expressions d'une manière similaire à la combinaison de commandes. L'opération de test entière ne sera vraie que si les deux opérandes (côtés) de && sont vrais, par exemple:
serait une façon de dire si $ a est un entier compris entre 2 et 5 (hors 2 et 5).
3) Évaluation arithmétique:
Enfin, && peut être utilisé dans l'évaluation arithmétique comme ET logique. Si les deux (ET logique) des nombres suivants sont différents de zéro, il renvoie 0, sinon 1 est renvoyé:
la source
if [./configure]
exemple, vous devez supprimer les crochets. Le correct estif ./configure; then make...
Je pense que vous irez mieux avec une explication de la "vraie" signification, les implications sont une autre chose :)
\
est le " caractère d'échappement ", et c'est l'un des trois mécanismes de citation disponibles dans bash: Cela signifie que si vous mettez un caractère d'échappement (le "\") à la toute fin d'une ligne, vous échappez en fait au nouveau caractère de ligne qui le suit immédiatement (le caractère RETOUR), ce qui a pour effet de "continuer la ligne" d'autres l'ont déjà expliqué dans leur réponseMes 2 cents
la source