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 /homeet même si la cdcommande échoue ( /homen'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 -alsi le cd /homea 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 lsdans 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 lsopé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 ./*