Antworten:
Das ;trennt nur einen Befehl von einem anderen. Der &&Befehl wird nur ausgeführt, wenn der vorherige erfolgreich war
cd /home; ls -al
Dies wird ausgeführt, cd /homeund selbst wenn der cdBefehl fehlschlägt ( /homenicht vorhanden, Sie haben keine Berechtigung, ihn zu durchlaufen usw.) ls -al.
cd /home && ls -al
Dies wird nur ausgeführt, ls -alwenn das cd /homeerfolgreich war.
a && b
Gibt a einen Exit-Code von Null zurück, wird b ausgeführt.
a || b
Wenn a einen Exit-Code ungleich Null zurückgibt, wird b ausgeführt.
a ; b
a wird ausgeführt und dann wird b ausgeführt.
cd /fakedir; ls -al
Wird lsim aktuellen Verzeichnis ausgeführt, da dies cd /fakedirfehlschlägt und die Shell den Exit-Status ignoriert, der ungleich Null ist.
cd /fakedir && ls -al
Da der &&Bediener nur fortfährt, wenn der vorherige Befehl normal beendet wurde (Status Null), wird keine lsOperation ausgeführt.
Es gibt andere Operatoren, die beispielsweise &einen Prozess im Hintergrund ausführen. Obwohl es oft am Ende eines Befehls steht, kann es in die Mitte einer Kette gestellt werden.
;Zum Beispiel ist die Verwendung von ein sehr gefährlicher Befehl (zumindest mit dem Befehl rm)cd /some/dir; rm -fr ./*. Bei solch einer destruktiven Operation müssen Sie also sicherstellen, dass Sie am richtigen Ort sind, bevor Sie rm ausführen. Der richtige Befehl lautetcd /some/dir && rm -fr ./*