В командной строке Linux широко используются символы-операторы, значительно расширяющие ее возможности, но они же становятся серьезным затруднением для начинающих, так как при внешней схожести несут абсолютно разный смысл.
Начнем с символа
& - амперсанд. Этот оператор заставляет команду работать в фоновом режиме. Т.е. если вы знаете, что команда выполняется какое-то продолжительное время, просто отправьте ее в фон следующим образом:command &
Но будет ошибкой использовать ее для объединения команд, чаще всего ошибаются похожим образом:apt update -y & apt full-upgrade -y К удивлению запустившего, первая команда запустится в фоне, а вторая одновременно с ней, но интерактивно. Понятно, что требуемая задача выполнена не будет.
Для объединения команд используется оператор
&& - логическое И. Несмотря на всю схожесть с прошлым оператором ее смысл совсем иной. В конструкции: command _1 && command _2 Вторая команда выполниться только при успешном выполнении первой, т.е. если она вернула код выхода 0.
Поэтому правильная команда для обновления системы будет выглядеть так:
apt update -y && apt full-upgrade -y && apt autoremove -y
Также все знают оператор | - пайп или труба. Он позволяет передать поток вывода одной команды в поток входа другой.А вот если мы поставим подряд две трубы -
|| - то получим оператор логическое ИЛИ, в конструкции:command _1 || command _2
Вторая команда будет выполнена только тогда, если первая вернет код ошибки. В более сложных конструкциях можно использовать
И – ИЛИ: command _1 && command _2 || command _3
Если первая команда завершилась успешно, то будет выполнена команда 2, иначе – команда 3.