<body><script type="text/javascript"> function setAttributeOnload(object, attribute, val) { if(window.addEventListener) { window.addEventListener('load', function(){ object[attribute] = val; }, false); } else { window.attachEvent('onload', function(){ object[attribute] = val; }); } } </script> <div id="navbar-iframe-container"></div> <script type="text/javascript" src="https://apis.google.com/js/plusone.js"></script> <script type="text/javascript"> gapi.load("gapi.iframes:gapi.iframes.style.bubble", function() { if (gapi.iframes && gapi.iframes.getContext) { gapi.iframes.getContext().openChild({ url: 'https://draft.blogger.com/navbar.g?targetBlogID\x3d5591484190086716210\x26blogName\x3d%D0%97%D0%B0%D0%BF%D0%B8%D1%81%D0%BA%D0%B8+ubuntu\x27%D0%B9%D1%86%D0%B0\x26publishMode\x3dPUBLISH_MODE_BLOGSPOT\x26navbarType\x3dBLUE\x26layoutType\x3dCLASSIC\x26searchRoot\x3dhttp://tlanvar.blogspot.com/search\x26blogLocale\x3dru\x26v\x3d2\x26homepageUrl\x3dhttp://tlanvar.blogspot.com/\x26vt\x3d1840766964675028820', where: document.getElementById("navbar-iframe-container"), id: "navbar-iframe" }); } }); </script>

Записки ubuntu'йца

Делюсь вот своими наблюдашками.


BASH. Часть 3. Выполнение команд.

среда, августа 01, 2007

В одной из предыдущих статей я кратко описывал типовые последовательности команд. Начиная с этой статьи все, что там описывалось, будет дано более подробно. Одна из основных функций оболочки состоит в том, чтобы организовать исполнение команд пользователя, вводимых им в командной строке. В частности, оболочка предоставляет пользователю два специальных оператора для организации задания команд в командной строке: ";" и "&".

Оператор ";"

Хотя чаще всего мы задаем команды в командной строке по одной, имеется возможность задать в одной строке несколько команд, которые будут выполнены последовательно, одна за другой. Для этого используется специальный символ — оператор ";". Если не поставить этот разделитель команд, то последующая команда может быть воспринята как аргумент предыдущей. Таким образом, если написать в командной строке что-то вроде

[user]$ command1 ; coramand2

то оболочка вначале запустит на выполнение команду command1, дождется, пока ее выполнение завершится, после чего запустит command2, дождется ее завершения, после чего снова выведет приглашение командной строки, ожидая следующих действий пользователя.

Оператор &

Оператор "&" используется для того, чтобы организовать исполнение команд в фоновом режиме. Если поставить значок & после команды, то оболочка вернет управление пользователю сразу после запуска команды, не дожидаясь, пока выполнение команды завершится. Например, если задать в командной строке "command1 & command2 &", то оболочка запустит команду command1, сразу же затем команду command2 и затем немедленно вернет управление пользователю.

Операторы "&&" и "||"

Операторы "&&" и "||" являются управляющими операторами. Если в командной строке СТОИТ command1 && command2, TO command2 выполняется В ТОМ И ТОЛЬКО в том случае, если статус выхода из команды command1 равен нулю, что говорит об успешном ее завершении. Аналогично, если командная строка имеет вид command1 || command2, то команда command2 выполняется тогда и только тогда, когда статус выхода из команды command1 отличен от нуля.

Можно только кратко сказать, что оболочка должна найти код команды, загрузить его в память, передать команде аргументы, заданные в командной строке, а после завершения выполнения соответствующего процесса передать каким-то образом пользователю или другому процессу результаты выполнения данной команды. Эти этапы сейчас и рассмотрим.

Итак, первый этап — поиск кода команды. Команды бывают встроенные (те, код которых включен в код самой оболочки) и внешние (код которых расположен в отдельном файле на диске). Встроенную команду оболочка всегда найдет, а для поиска внешней команды пользователь, в принципе, должен указать оболочке полный путь до соответствующего файла. Однако для облегчения жизни пользователей оболочка умеет искать внешние команды в каталогах, которые перечислены в специально заданных "путях поиска". Только если она не находит нужных файлов в таких каталогах, она решает, что пользователь ошибся при вводе имени команды. О том, как оболочка организует передачу данных исполняемой команде и выдачу результатов пользователю будет написано в следующей статье.



Другие части.

BASH. Часть 1. Введение.
BASH. Часть 2. Специальные символы.
BASH. Часть 3. Выполнение команд.
BASH. Часть 4. Стандартный ввод/вывод.
BASH. Часть 5. Параметры и переменные. Окружение оболочки.
BASH. Часть 6. Раскрытие выражений


Из книги Виктора Костромина "Linux для пользователя".

Ярлыки: , , ,


| запостил: banderlog, 10:42 | Ссылка на статью | Комментариев (5) |

AddThis Social Bookmark Button

Коментариев: 5 штук(и)


Я уже и комментариев не оставляю - просто молча уношу к себе в Scrapbook в раздел "Золото" :-)
Классные статьи!
откоментировал: Blogger virens, 1 августа 2007 г., 11:31  

Спасибо за оценку моих трудов. :)
откоментировал: Blogger banderlog, 1 августа 2007 г., 11:38  

Пожалуй я тоже себе это сохраню. Для хорошей статьи места не жалко.

Может стоит ссылку на авторство выложить???
примерно вот такую....
http://www.intuit.ru/department/os/baselinuxwork/5/
а то как то.... не красиво...
откоментировал: Anonymous Василий, 20 августа 2007 г., 13:45  

Для Василия: Согласен... Иногда просто из головы вылетает. Вот только INTUIT'ом я не пользуюсь. Имея дома более сотни книг по теме блога, сам понимаешь, лезть, хоть и в уважаемый, INTUIT не имеет смысла. А то, что у них все сходится, то даю ссылку непосредственно на тот источник, откуда взят материал.
откоментировал: Anonymous Автор, 20 августа 2007 г., 14:26  


<< На главную... | << Добавить комментарий