Réponses:
Le ;
juste sépare une commande d'une autre. Le &&
dit exécuter uniquement la commande suivante si la précédente a réussi
cd /home; ls -al
Cela va cd /home
et même si la cd
commande échoue ( /home
n'existe pas, vous n'avez pas la permission de la parcourir, etc.), elle sera exécutée ls -al
.
cd /home && ls -al
Cela ne fonctionnera que le ls -al
si le cd /home
a réussi.
a && b
si a renvoie zéro code de sortie, alors b est exécuté.
a || b
si a renvoie un code de sortie non nul, b est exécuté.
a ; b
a est exécuté puis b est exécuté.
cd /fakedir; ls -al
S'exécute ls
dans le répertoire en cours car cd /fakedir
échouera et le shell ignorera le statut de sortie différent de zéro.
cd /fakedir && ls -al
Etant donné que l' &&
opérateur continuera uniquement si la commande précédente s'est terminée normalement (statut égal à zéro), aucune ls
opération ne sera effectuée.
Il existe d'autres opérateurs, tels que ceux &
qui fondent un processus. Bien que souvent placé à la fin d'une commande, il peut être placé au milieu d'une chaîne.
;
est très dangereux (au moins avec la commande rm), par exemplecd /some/dir; rm -fr ./*
. Donc, avec une telle opération destructive, vous devez être sûr d’être au bon endroit avant d’exécuter rm. La bonne commande estcd /some/dir && rm -fr ./*