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 /home
und selbst wenn der cd
Befehl fehlschlägt ( /home
nicht vorhanden, Sie haben keine Berechtigung, ihn zu durchlaufen usw.) ls -al
.
cd /home && ls -al
Dies wird nur ausgeführt, ls -al
wenn das cd /home
erfolgreich 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 ls
im aktuellen Verzeichnis ausgeführt, da dies cd /fakedir
fehlschlä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 ls
Operation 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 ./*