Выполнение нескольких команд в командной строке
В командной строке можно объединять сразу несколько команд в одну строку (в один запуск). Например, вам нужно выполнить сначала одну команду, за ней вторую и так далее. Но вы хотите сразу вбить в командной строке одну инструкцию, которая все сделает.
Выполнение команд последовательно
Например, мы хотим выполнить сначала одну команду. Затем, когда она отработает (вернет управление в командную строку), нам нужно запустить вторую команду. Для этого служит символ «;». Таким образом, если набрать в терминале:
$ command1; command2; command3
то сначала запустится первая команда command1 , а когда управление вернется в терминал, то запустится вторая и так далее.
Зависимое выполнение команд
Символы && и || означают не что иное, как логическое И и ИЛИ . Поэтому когда мы пишем:
$ command1 && command2 && command3
то это означает, что команда command2 будет выполнена только в том случае, если команда command1 была выполнена успешно (вернула нулевой код завершения). Каждая следующая команда выполняется только при успешном выполнении предыдущей.
Если код завершения программы или команды 0 — это означает ИСТИНА, любое другое значение (как правило, это код ошибки) — ЛОЖЬ.
$ command1 || command2 || command3
то команда command2 будет выполнена только в том случает, если command1 вернула ошибку (не нулевой код завершения). Каждая следующая команда запускается только если предыдущая вернула ошибку.
Такое поведение объясняется очень просто: интерпретируя И нет смысла выполнять вторую команду, если первая вернула ошибку. А интерпретируя ИЛИ нет смысла выполнять вторую команду если первая выполнилась с успехом.
$ sort bigdata > /tmp/sorted && mv /tmp/sorted > bigdata
Этот же результат будет получен в результате выполнения кода:
if sort bigdata > /tmp/sorted ; then mv /tmp/sorted > bigdata fi
Операторы && и || можно объединять в одной командной строке:
$ who | grep "^$name " > /dev/null && echo "$name logged on" || echo "$name not logged on"
Первая команда echo выполняется при удачном выполнении команды grep , а вторая — при неудачном.
Эти операторы часто используются в условиях if :
if command1 && command2 ; then command3 fi
Обе команды должны возвратить нулевой код завершения (логическая операция И ), чтобы выполнилась команда command3 . Этот фрагмент кода можно записать и так:
$ command1 && command2 && command3
Еще одни пример использования:
if command1 || command2 ; then command3 fi
Хотя бы одна команда должна возвратить нулевой код завершения (логическая операция ИЛИ ), чтобы выполнилась команда command3 . Этот фрагмент кода можно записать и так:
$ command1 || command2 && command3
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.
- 1С:Предприятие (31)
- API (29)
- Bash (43)
- CLI (99)
- CMS (139)
- CSS (50)
- Frontend (75)
- HTML (66)
- JavaScript (150)
- Laravel (72)
- Linux (146)
- MySQL (76)
- PHP (125)
- React.js (66)
- SSH (27)
- Ubuntu (68)
- Web-разработка (509)
- WordPress (73)
- Yii2 (69)
- БазаДанных (95)
- Битрикс (66)
- Блог (29)
- Верстка (43)
- ИнтернетМагаз… (84)
- КаталогТоваров (87)
- Класс (30)
- Клиент (27)
- Ключ (28)
- Команда (68)
- Компонент (60)
- Конфигурация (62)
- Корзина (32)
- ЛокальнаяСеть (28)
- Модуль (34)
- Навигация (31)
- Настройка (140)
- ПанельУправле… (29)
- Плагин (33)
- Пользователь (26)
- Практика (99)
- Сервер (74)
- Событие (27)
- Теория (105)
- Установка (66)
- Файл (47)
- Форма (58)
- Фреймворк (192)
- Функция (36)
- ШаблонСайта (68)
Выполнение сразу нескольких команд в командной строке
В командной строке Linux можно объединять сразу несколько команд в одну строку (в один запуск). Например, вам нужно выполнить сначала одну команду, за ней вторую и так далее. Но вы хотите сразу вбить в командной строке одну инструкцию, которая все сделает. Для этого можно воспользоваться служебными символами.
Выполнение команд последовательно
Например, мы хотим выполнить сначала одну команду. Затем, когда она отработает (вернет управление в командную строку), нам нужно запустить вторую команду. Для этого служит символ точка с запятой ;. Таким образом, если вы выполните в терминале:
mycommand1; mycommand2; mycommand3
то сначала запустится первая команда mycommand1, а когда управление вернется в терминал, то запустится вторая и так далее.
Для теста попробуйте выполнить (в Ubuntu):
Это называется последовательным выполнением команд. Вне зависимости от того, как выполнилась предыдущая команда, вторая команда должна будет запуститься. Можно выполнять команды в зависимости от того, как отработала предыдущая для этого служат символы && и ||.
Зависимое выполнение команд
Символы && и || означают не что иное, как логическое И и ИЛИ. Поэтому когда мы пишем:
mycommand1 && mycommand2 && mycommand3
то это означает, что команда mycommand2 будет выполнена только в том случае, если команда mycommand1 была выполнена успешно. Каждая следующая команда выполняется только при успешном выполнении предыдущей.
Если выполнить конструкцию:
mycommand1 || mycommand2 || mycommand3
то команда mycommand2 будет выполнена только, если mycommand1 вернула ошибку. Каждая следующая команда запускается только если предыдущая вернула ошибку.
Как запустить несколько команд Linux из одной строки
Практически для каждого администратора Linux командная строка становится основным инструментом для работы вместо любого графического интерфейса.
Тем временем нужно продолжать практиковать работу с консолью Linux и находить способы сделать эту задачу немного более эффективной. Одним из путей достижения этой конкретной цели является изучение некоторых приемов, которые делают выдачу команд более эффективной.
Возьмем, к примеру, возможность запуска нескольких последовательных команд из bash. Лучший пример этого — апдейт и апгрейд Ubuntu Linux. В командной строке bash вы можете сделать это, выполнив сначала команду sudo apt-get update, а затем команду sudo apt-get upgrade -y.
Но что, если бы вы могли объединить эти две команды в одну? Таким образом, вам не нужно сидеть сложа руки и ждать первой команды, прежде чем вводить вторую. К счастью, это на самом деле довольно просто. Есть два способа сделать это. Первый использует точку с запятой примерно так:
sudo apt-get update; sudo apt-get upgrade -y
Единственная проблема этого метода заключается в том, что вторая команда будет запущена, даже если первая команда не будет выполнена. Могут быть случаи, когда вы не хотите, чтобы это произошло. В этих случаях вы запускаете команду:
sudo apt-get update && sudo apt-get upgrade -y
Будут выполняться обе версии команды, но вторая форма будет выполнять вторую команду только в том случае, если первая завершится успешно.
Это очень важно, когда вы делаете такие вещи, как установка программного обеспечения из исходного кода. И вы можете сделать это с более чем двумя командами. Допустим, вы хотите обновить, обновить и автоматически удалить с помощью apt. Сделайте это с:
sudo apt-get update && sudo apt-get upgrade -y && sudo apt-get autoremove -y
И вот как вы можете легко запустить последовательно несколько команд из bash.