Выполнение сразу нескольких команд в командной строке. Linux статьи
Написать статью
Войдите, чтобы писать статьи

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

24

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

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

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

mycommand1; mycommand2; mycommand3

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

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

gnome-terminal; gedit

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

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

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

mycommand1 && mycommand2 && mycommand3

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

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

mycommand1 || mycommand2 || mycommand3

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

Лайков: +4
войдите, чтобы ставить лайки
24
  • Опубликовано: 14.12.2012

Комментарии

forekko
Активный пользователь
Активный
18.01.2013
21:04
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
А почему этим постам нельзя выставлять оценки?
yuriy
Активный пользователь
Активный
18.01.2013
21:11
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийforekkoРодительский комментарий
+1
войдите, чтобы ставить лайки
Пока нет такой возможности. В будущем будет, наверное. Но не оценки а просто +1 скорее всего.
Каштановый Дирижабль
28.10.2016
11:16
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийyuriyРодительский комментарий
+1
войдите, чтобы ставить лайки
Будущее уже наступило, а оценки так и не появились. Лови плюсов, бро.
Шаринган
17.11.2017
08:43
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийКаштановый ДирижабльРодительский комментарий
+1
войдите, чтобы ставить лайки
Я из еще более позднего будущего. Все по прежнему :(
Санёк
29.04.2018
09:58
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийШаринганРодительский комментарий
+1
войдите, чтобы ставить лайки
Видно это будущее никогда не наступит
Роман
13.07.2018
21:18
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийСанёкРодительский комментарий
+1
войдите, чтобы ставить лайки
Подтверждаю
[аноним]
15.11.2018
15:32
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийРоманРодительский комментарий
+1
войдите, чтобы ставить лайки
Ну сколько можно ждать?
Роман
23.01.2019
20:30
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийРодительский комментарий
+1
войдите, чтобы ставить лайки
Сказали же что в будущем
yuriy
Активный пользователь
Активный
24.01.2019
11:53
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийРоманРодительский комментарий
+1
войдите, чтобы ставить лайки
https://pingvinus.ru/news/1640
Сергей
07.03.2019
13:45
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийyuriyРодительский комментарий
+2
войдите, чтобы ставить лайки
Эта ветка комментариев вошла в историю. Ожидания себя окупили))
shilgen
Активный пользователь
Активный
04.04.2013
03:03
Постоянная ссылка на комментарийПостоянная ссылка на комментарий
+1
войдите, чтобы ставить лайки
Вопрос: как выполнить две команды одновременно?
yuriy
Активный пользователь
Активный
04.04.2013
06:10
Постоянная ссылка на комментарийПостоянная ссылка на комментарийРодительский комментарийshilgenРодительский комментарий
+2
войдите, чтобы ставить лайки
Можно так:
command1 &
command2 &

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

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

Ваше имя:
Текст комментария:
  • Уважать других.
  • Не ругаться.
  • Без оскорблений.
  • Без грубости.
  • Не переходить на личности.
  • Писать на русском языке.
  • Без политики.
  • Без флуда.
Правила