Выполнение сразу нескольких команд в командной строке

В командной строке Linux можно объединять сразу несколько команд в одну строку (в один запуск). Например, вам нужно выполнить сначала одну команду, за ней вторую и так далее. Но вы хотите сразу вбить в командной строке одну инструкцию, которая все сделает. Для этого можно воспользоваться служебными символами.

Выполнение команд последовательно

Например, мы хотим выполнить сначала одну команду. Затем, когда она отработает (вернет управление в командную строку), нам нужно запустить вторую команду. Для этого служит символ точка с запятой ;. Таким образом, если вы выполните в терминале:

mycommand1; mycommand2; mycommand3

то сначала запустится первая команда mycommand1, а когда управление вернется в терминал, то запустится вторая и так далее.

Для теста попробуйте выполнить (в Ubuntu):

gnome-terminal; gedit

Это называется последовательным выполнением команд. Вне зависимости от того, как выполнилась предыдущая команда, вторая команда должна будет запуститься. Можно выполнять команды в зависимости от того, как отработала предыдущая для этого служат символы && и ||.

Зависимое выполнение команд

Символы && и || означают не что иное, как логическое И и ИЛИ. Поэтому когда мы пишем:

mycommand1 && mycommand2 && mycommand3

то это означает, что команда mycommand2 будет выполнена только в том случае, если команда mycommand1 была выполнена успешно. Каждая следующая команда выполняется только при успешном выполнении предыдущей.

Если выполнить конструкцию:

mycommand1 || mycommand2 || mycommand3

то команда mycommand2 будет выполнена только, если mycommand1 вернула ошибку. Каждая следующая команда запускается только если предыдущая вернула ошибку.

14.12.2012yuriy15

Комментарии

18.01.2013, 21:04
А почему этим постам нельзя выставлять оценки?
Активный
18.01.2013, 21:11
Пока нет такой возможности. В будущем будет, наверное. Но не оценки а просто +1 скорее всего.
Каштановый Дирижабль
28.10.2016, 11:16
Будущее уже наступило, а оценки так и не появились. Лови плюсов, бро.
Шаринган
17.11.2017, 08:43
Я из еще более позднего будущего. Все по прежнему :(
Активный
04.04.2013, 03:03
Вопрос: как выполнить две команды одновременно?
Активный
04.04.2013, 06:10
Можно так:
command1 &
command2 &

& - запускает команду в фоне и тут же передает управление обратно в командную строку.
Активный
06.04.2013, 00:45
Спасибо, оказалось как всегда настолько просто, что успело и забыться)
Активный
06.04.2013, 23:40
Объясните, пожалуйста, почему не работает:
sudo shutdown -h -P +20 & (обратный слэш, съедается)
mplayer -shuffle -playlist 'Музыка/radio/rr/chmp3.m3u' -cache 512 &
Maxim
13.04.2013, 23:06
Я бы еще рассмотрел группировку команд через () - т.к. часто надо получить вывод сразу от нескольких команд, для grep или awk
qwerty
12.07.2013, 22:39
спасибо+
Alexey
17.09.2013, 02:20
допустим мне нужно вывести первые 10 строк файлов подкаталога и последних 10 строк
Команда: ls -la -R |head -10 && tail -10| less -S
Вопрос, почему не выводит в чем ошибка?
Активный
13.03.2015, 17:58
годная статья, добавлю в закладки'). буквально на днях нужен был запростецкий скрипт с последовательным выполнением команд, теперь можно видоизменить с учетом полученных знаний'). хорошо, когда написано просто и понятно.
РоманSH
16.11.2015, 22:36
везде на форумах пишут команды в несколько строк и чтоб всё выполнить надо каждую строку по очереди копировать и вставлять, поэтому резонный вопрос как бы скопировать всем списком и пускай выполняются по очереди..... или может можно вставить в текстовый файл и выполнить всё как-то, кто что скажет???
Активный
17.11.2015, 18:08
да не, я такого не встречал. обычно просто объединяют 2 команды в одну
sudo apt-get remove transmission && sudo apt-get autoremove
РоманSH
17.11.2015, 21:18
Нашел, создать текстовый файл со списком и сделать файл исполняемым в свойствах, ну и через терминал запустить ))

Написать комментарий

Ваше имя:
Текст:
Вы не зарегистрированы: комментарий будет опубликован только после просмотра администратором сайта.