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


Дата: 07 апреля 2010





Объединение команд это очень полезная операция которую я сам очень часто применяю в терминале. Допустим вам нужно куда-то срочно уйти, но вы хотите скомпилировать что-либо. Вы знаете, что сначала нужно ввести ./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 выполняться тоже не будет.

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

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

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

Комментарии:
Автор: marlock,   дата: 07 апреля 2010   21:02:47
Спасибо! Большинства этого не знал
Автор: foobar,   дата: 08 апреля 2010   22:11:44
Все отлично, просто и понятно, но не хватает информации по трубе("|").
Автор: dinar007007,   дата: 26 апреля 2010   09:04:28
вопрос - как можно добавить множество файлов в мплеер? напрмиер по поиску либо содержимое папки воспроизвести
Автор: subsanek,   дата: 26 апреля 2010   11:28:50
dinar007007, переместитесь в папку с музыкой и введите mplayer * для воспроизведения всех треков в папке.




 
Добавить комментарий:
Имя: *
e-mail:
Комментарий: *
Введите число 92: *


Архив статей:
Май 2017
Март 2017
Апрель 2016
Март 2016
Октябрь 2013
Сентябрь 2013
Май 2013
Март 2013
Ноябрь 2012
Июль 2012
Июнь 2012
Апрель 2012
Март 2012
Февраль 2012
Апрель 2011
Март 2011
Февраль 2011
Январь 2011
Декабрь 2010
Ноябрь 2010
Октябрь 2010
Сентябрь 2010
Август 2010
Июль 2010
Июнь 2010
Май 2010
Апрель 2010
Март 2010

Случайные:
Windows OpenSoft Pack - сборник свободного программного обеспечения для Windows

Florence Virtual Keyboard: удобная виртуальная клавиатура с поддержкой мультиязычности

htop: очень удобный консольный системный монитор

Быстрая установка и настройка LAMP

Grab and Drag: Прокрутка страниц пальцем в firefox

Последовательные Диаграммы SSH 2.0





Коллеги:    все
 Linux для всех

Наши баннеры:
linuxnow.ru
linuxnow.ru
Установить баннер