Ответы:
;
Просто отделяет одну команду от другой. &&
Говорит только запустить следующую команду , если предыдущий был успешным
cd /home; ls -al
Это произойдет, cd /home
и даже если cd
команда не будет выполнена ( /home
не существует, у вас нет разрешения на ее прохождение и т. Д.), Она будет выполнена ls -al
.
cd /home && ls -al
Это будет только запустить, ls -al
если cd /home
был успешным.
a && b
если a возвращает нулевой код выхода, то выполняется b .
a || b
если a возвращает ненулевой код выхода, то выполняется b .
a ; b
а выполняется, а затем б выполняется.
cd /fakedir; ls -al
Запускается ls
в текущем каталоге, потому что cd /fakedir
произойдет сбой, и оболочка будет игнорировать состояние выхода, которое не равно нулю.
cd /fakedir && ls -al
Поскольку &&
оператор продолжит работу, только если предыдущая команда завершилась нормально (нулевое состояние), никакие ls
операции выполняться не будут.
Существуют и другие операторы, например, &
которые будут задавать фон процесса. Хотя оно часто помещается в конце команды, оно может быть помещено в середину цепочки.
;
действительно опасно (по крайней мере, с помощью команды rm)cd /some/dir; rm -fr ./*
. Таким образом, при такой разрушительной операции вы должны быть уверены, что находитесь в нужном месте, прежде чем выполнять команду rm. Правильная командаcd /some/dir && rm -fr ./*