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 /home
a nawet jeśli cd
polecenie się nie powiedzie ( /home
nie istnieje, nie masz uprawnień do przejścia, itp.), Uruchomi się ls -al
.
cd /home && ls -al
To uruchomi się tylko, ls -al
jeśli cd /home
zakoń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 ls
w bieżącym katalogu, ponieważ cd /fakedir
zawiedzie, 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 ls
operacja 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 ./*