Linux последовательное выполнение скриптов

Объединения команд и обработка выходных данных в shell

Объединение команд это очень полезная операция которую я сам очень часто применяю в терминале. Допустим вам нужно куда-то срочно уйти, но вы хотите скомпилировать что-либо. Вы знаете, что сначала нужно ввести ./configure потом make и только потом make install, при том окончание работы make иногда приходиться ждать час. В таких моментах придет объединение команд. Зная этот прием, вы введете ./configure && make && make install и уйдете по своим делам в то время как все нужные команды выполняться сами и полностью завершат компиляцию.
Можно даже добавить команду shutdown -h now в конец для отключения компьютера после выполнения всех операций.

Последовательное выполнение команд вне зависимости от исхода работы предыдущей.
Выполнить сколько угодно команд последовательно можно путем разделение команд символом ; (точка с запятой).
Пример:
./configure ; make ; make install
-выполняться все команды последовательно вне зависимости от исхода предыдущих.
То есть, если в ./configure будет выведено сообщение об ошибки, то интерпретатор все равно попробует выполнить make и make install .

Последовательное выполнение команд при условии успешного завершения предыдущих.
Символы && (два амперсанда) позволяют выполнять действие подобные предыдущей конструкции, но при не успешном завершении команды интерпретатор прекратит выполнение всего сценария.
Например:
./configure && make && make install
-если в ./configure будет ошибка, то последующие команды не будут исполняться. Если же все прошло удачно, то начнут выполняться make и make install притом если в make будет ошибка, то make install выполняться тоже не будет.

Читайте также:  Linux apt get error

Выполнение команды, если предыдущая завершилась ошибкой.
Можно выполнить команды не только при успешном завершении предыдущей, но и при ошибочном завершении предыдущей с помощью символов || (две прямых черты).
Пример:
make install || echo ‘Ошибка!’
-выведется слово ошибка при неудачном завершении команды make install , иначе это слово выводиться не будет.

Использование выходных данных одной команды при вызове другой.
Давайте посмотрим на пример:
touch $(uname -r)
Эта команда создаст файл имя которого будет версия текущего ядра linux.
Команде touch передается с помощью конструкции $() команда выходные данные которой можно использовать для аргумента первой команды.

Запись результатов выполнения команды в файл.
Это очень удобная функция! С помощью символа > (больше) можно записать вывод команды в текстовый файл.
Пример:
ls -R /home > home.txt
-эта команды запишет в файл home.txt все папки и файлы находящиеся в домашнем каталоге и подкаталогах. В стандартный вывод ничего не выведется — все пойдет исключительно в файл.
Использование дозаписи
Чтобы файл не очищался, а новые данные добавлялись в конец надо использовать символы >> (два знака больше)
Пример:
ls >> home.txt
-при всех последующих вызовах такой команды новые данные будут добавляться в конец файла.

Автор: foobar, дата: 08 апреля 2010 , время: 22:11:44 (MSK).
Все отлично, просто и понятно, но не хватает информации по трубе(«|»).

Автор: dinar007007, дата: 26 апреля 2010 , время: 09:04:28 (MSK).
вопрос — как можно добавить множество файлов в мплеер? напрмиер по поиску либо содержимое папки воспроизвести

Автор: subsanek, дата: 26 апреля 2010 , время: 11:28:50 (MSK).
dinar007007, переместитесь в папку с музыкой и введите mplayer * для воспроизведения всех треков в папке.

Читайте также:  Linux mysql забыл пароль

Источник

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

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

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

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

mycommand1; mycommand2; mycommand3

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

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

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

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

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

mycommand1 && mycommand2 && mycommand3

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

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

mycommand1 || mycommand2 || mycommand3

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

Источник

Оцените статью
Adblock
detector