Odpowiedzi:
Po ;prostu oddziela jedno polecenie od drugiego. &&Mówi tylko uruchomić następujące polecenie, jeśli poprzedni był udany
cd /home; ls -al
Spowoduje to, cd /homea nawet jeśli cdpolecenie się nie powiedzie ( /homenie istnieje, nie masz uprawnień do przejścia, itp.), Uruchomi się ls -al.
cd /home && ls -al
To uruchomi się tylko, ls -aljeśli cd /homezakończyło się powodzeniem.
a && b
jeśli a zwraca zerowy kod wyjścia, to b jest wykonywane.
a || b
jeśli a zwraca niezerowy kod wyjścia, to b jest wykonywane.
a ; b
a jest wykonywane, a następnie b jest wykonywane.
cd /fakedir; ls -al
Działa lsw bieżącym katalogu, ponieważ cd /fakedirzawiedzie, a powłoka zignoruje status wyjścia, który nie jest równy zero.
cd /fakedir && ls -al
Ponieważ &&operator będzie kontynuował działanie tylko wtedy, gdy poprzednie polecenie zakończyło się normalnie (stan zero), żadna lsoperacja nie zostanie wykonana.
Istnieją inne operatory, takie jak te, &które będą stanowić tło procesu. Choć często umieszczany na końcu polecenia, może być umieszczony w środku łańcucha.
;jest naprawdę niebezpieczne (przynajmniej z poleceniem rm)cd /some/dir; rm -fr ./*. Tak więc przy tak niszczycielskim działaniu musisz mieć pewność, że jesteś we właściwym miejscu przed uruchomieniem rm. Prawidłowe polecenie tocd /some/dir && rm -fr ./*