Відповіді:
;Просто відокремлює одну команду від іншої. &&Каже тільки запустити наступну команду , якщо попередній був успішним
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 .
cd /fakedir; ls -al
Запускається lsв поточному каталозі, оскільки cd /fakedirне вдасться, і оболонка буде ігнорувати статус виходу, який не дорівнює нулю.
cd /fakedir && ls -al
Оскільки &&оператор буде продовжуватись лише тоді, коли попередня команда нормально вийшла (стан нульовий), жодна lsоперація не буде виконуватися.
Є й інші оператори, такі, як &цей процес буде фоновим. Хоча часто розміщується в кінці команди, її можна помістити посередині ланцюга.
;- це справді небезпечно (принаймні, з командою rm), наприкладcd /some/dir; rm -fr ./*. Тож при такій руйнівній операції ви повинні бути впевнені, що ви знаходитесь у потрібному місці, перш ніж виконувати rm. Правильна командаcd /some/dir && rm -fr ./*