Wenn ich zwei separate Befehle in einer Zeile ausführen wollte, könnte ich dies tun:
cd /home; ls -al
oder dieses:
cd /home && ls -al
Und ich bekomme die gleichen Ergebnisse. Was passiert mit diesen beiden Methoden im Hintergrund? Was ist der funktionale Unterschied zwischen ihnen?
;
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 ./*
Gibt a einen Exit-Code von Null zurück, wird b ausgeführt.
Wenn a einen Exit-Code ungleich Null zurückgibt, wird b ausgeführt.
a wird ausgeführt und dann wird b ausgeführt.
quelle
Wird
ls
im aktuellen Verzeichnis ausgeführt, da diescd /fakedir
fehlschlägt und die Shell den Exit-Status ignoriert, der ungleich Null ist.Da der
&&
Bediener nur fortfährt, wenn der vorherige Befehl normal beendet wurde (Status Null), wird keinels
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.quelle
Sie können sie auch wie eine
if..then..else
Befehlslogik zum Verketten zusammenfügen.Beispiel:
quelle