Главная » Просмотр файлов » А. Робачевский - Операционная система UNIX

А. Робачевский - Операционная система UNIX (1114671), страница 16

Файл №1114671 А. Робачевский - Операционная система UNIX (А. Робачевский - Операционная система UNIX) 16 страницаА. Робачевский - Операционная система UNIX (1114671) страница 162019-05-08СтудИзба
Просмтор этого файла доступен только зарегистрированным пользователям. Но у нас супер быстрая регистрация: достаточно только электронной почты!

Текст из файла (страница 16)

При этом произ!водится подстановка следующих шаблонов:* — соответствует любому имени файла (или его части), кроменачинающихся с символа '.',[abc] — соответствует любому символу из перечисленных (а илиили с),? — соответствует любому одиночному символу.Делает соответствующие назначения потоков ввода/вывода. Если встроке присутствуют символы перенаправления (>, <,|), shellпроизводит соответствующее перенаправление потоков. Программныйинтерфейс ввода/вывода мы рассмотрим в разделе "Работа с файлами"следующей главы.4.

Выполняет команду, передавая ей аргументы с выполненными подста!новками. При этом:• Если команда является функцией, определенной пользователем,вызывается функция.В противном случае, если команда является встроенной коман!дой shell, запускается встроенная команда.• В противном случае производится поиск программы в каталогах,указанных переменнойесли имя команды задано безпути. Если имя команды задано явно, т.

е. содержит элементыпути (относительный или абсолютный путь), производится за!пуск программы. В случае, если программа не найдена, выво!дится сообщение об ошибке.Описанные подстановки, выполняемые интерпретатором, следует иметь ввиду при запуске команд. Например, запуск команды rm приведет к уда!лению всех файлов данного каталога:$Вывести список файлов каталогаclientserver$ rm *Удалить файлы$$Каталог пустwww.books-shop.comUNIXКоманда rm(l) без колебаний выполнит свою функцию, поскольку в каче!стве аргументов она получит обычный список файлов. Замену символа '*'на список всех файлов каталога произведет shell, итрудно догадать!ся, что вы собираетесь удалить все файлы.

Реальный же вызов rm(l) будетиметь вид:clientserverТочно так же запускаемые программы ничего не знают о перенаправлениипотоков ввода/вывода, произведенных командным интерпретатором. На!помним, что перенаправление ввода/вывода возможно лишь для стандарт!ных потоков ввода, вывода и сообщений об ошибках. Впрочем, большин!ство утилит UNIX используют только стандартные потоки.Запуск командКак уже говорилось, запускаемые команды могут являться либо функция!ми, определенными пользователем, либо встроенными командами интер!претатора, либо исполняемыми файлами — прикладными программами иутилитами.

В любом случае, синтаксис их вызова одинаков.Если необходимо запустить сразу несколько команд, это можно сделать водной строке, разделив команды символом ';'• Например:$dateApr 18 1997 21:07Заметим, что команды будут выполнены последовательно: сначала выпол!нится командакоторая выведет имя текущего каталога, а затемкоторая покажет дату и время.Можно запустить программу в фоновом режиме. В этом случае shell не бу!дет ожидать завершения выполнения программы, а сразу выведет пригла!шение, и вы сможете продолжить работу в командном интерпретаторе.Для этого строку команды необходимо завершить символом '&':$ find$print&Пока утилита find(l) производит поиск файла с именемскани!руя файловую систему, вы сможете выполнить еще массу полезных дел,например, отправить почту или распечатать документ на принтере. Мывернемся к этой схеме запуска программ далее в этой главе при обсужде!нии системы управления заданиями.Наконец, командный интерпретатор предоставляет возможность условногозапуска команд.

Например, если необходимо выполнить команду только вслучае успешного завершения предыдущей, следует воспользоваться сле!дующей синтаксической конструкцией:&&www.books-shop.com74ГлаваРабота в операционной системе UNIXВ качестве примера рассмотрим поиск имени пользователя в файле паро!лей, и в случае успеха — поиск его имени в файле групп:$ grep sergeygrep sergey /etc/groupУспехом считается нулевой код возврата программы, неудачей — все дру!гие значения.Можно назначить выполнение команды только в случае неудачного за!вершения предыдущей. Для этого команды следует разделить двумя сим!волами$\ \ echo Команда завершилась неудачноПриведенный синтаксис является упрощенной формой условного выраже!ния.

Командный интерпретатор имеет гораздо более широкие возможно!сти проверки тех или иных условий, которые мы рассмотрим в следующемразделе.Условные выраженияЯзык Bourne shell позволяет осуществлять ветвление программы, предос!тавляя оператор if. Приведем синтаксис этого оператора:if условиеthenfiКоманды commandl,и т. д.

будут выполнены, если истинно ус!ловие. Условие может генерироваться одной или несколькими командами.По существу, ложность или истинность условия определяется кодом воз!врата последней выполненной команды. Например:if grep sergeythenecho п о л ь з о в а т е л ь sergey найден в файле паролейfiЕсли слово sergey будет найдено программой grep(l) в файле паролей (кодвозвратаравен 0), то будет выведено соответствующее сообщение.Возможны более сложные формы оператора if.setif [=]Установим позиционные параметры равными значениямполей вывода программыДевятое поле вывода — предыдущий уровень выполнениясистемы; символозначает однопользовательский режимthenecho Система загружаетсяwww.books-shop.comПользовательскаяUNIXif [= "2" ] Седьмое поле — текущий уровеньecho Переход на уровень выполнения 2elseecho Переход на уровень выполнения 3fiДанный фрагмент скрипта проверяет уровень выполнения, с которого сис!тема совершила переход, и текущий уровень выполнения системы.

Соот!ветствующие сообщения выводятся на консоль администратора. В этомфрагменте условие генерируется командой test, эквивалентной (и болеенаглядной) формой которой являетсяКоманда test является наиболеераспространенным способом генерации условия для оператора if.Команда testКоманда test имеет следующий синтаксис:test выражениеили[ выражение ]Команда вычисляет логическое выражение (табл.

1.10) и возвращает 0, ес!ли выражение истинно, и 1 в противном случае.Таблица 1.10. Выражения, используемые в команде testВыражения с файлами%s fileРазмер файлабольше ОДля файла file разрешен доступ на чтение%w fileДля файларазрешен доступ на запись%хДля файларазрешено выполнение%fФайлсуществует и является обычным файломfileФайл file является каталогом%с fileФайл file является специальным файлом символьного устройства%b fileФайлявляется специальным файлом блочного устройства%р fileФайлявляется поименованным каналомfileФайл file имеет установленный флаг%g fileФайл file имеет установленный флаг SGID%k fileФайл file имеет установленный флаг sticky bitВыражения со строками!z stringСтрокаимеет нулевую длину!n stringstringО= string2Две строки идентичныstringl != string2Две строки различныwww.books-shop.com76ГлаваРабота в операционнойUNIXТаблица 1.10 (продолжение)Сравнение целых чисел— eqравно11 %пе 12не равно 121211 строго меньше 1211 %1е11 меньше или равно 121112строго больше%де 1211 больше или равно 12Более сложные выражения могут быть образованы с помощью логическихоператоров:.' выражение!а!оИстинно, если выражение ложно (оператор NOT)если оба выражения истинны (оператор AND)Истинно, если хотя бы одно из выражений истинно(оператор OR)Приведем несколько примеров использования выражений.Фрагмент скрипта, используемый при регистрации нового пользователя.Скрипт проверяет наличие в домашнем каталогескриптаи в случае его отсутствия копирует шаблон:if [ ! fthenecho "файласрfi]не существует — скопируем шаблон"Фрагмент скрипта, проверяющего наличие новой почты в почтовом ящикепользователяif [ s $MAIL ]thenecho "Пришла почта"fiФрагмент скрипта инициализации системы — запуска "суперсервера"InternetЕсли исполняемый файл /etc/inetd существует, он за!пускается на выполнение.if [ х /etc/inetd ]then/etc/inetdecho "запущен серверfiФрагмент скрипта, анализирующий ввод пользователя, сохраненный в пе!ременнойЕсли пользователь ввелилискрипт завершаетсвою работу.www.books-shop.comUNIXif [then=77!о=]exitfiЦиклыЯзык программирования Bourne shell имеет несколько операторов цикла.Приведем их синтаксис:1) while условиеdodone2) until условиеdocommandldone3) for var in списокdocommandldoneС помощью оператора while команды commandl,и т.

д. будутвыполняться, пока условие не станет ложным. Как и в случае с операто!ром if, условие генерируется кодом возврата команды, например, test.В случае оператора until команды commandl,полняться, пока условие не станет истинным.и т. д. будут вы!Оператор for обеспечивает выполнение цикла столько раз, сколько слов всписке. При этом переменная var последовательно принимает значения,равные словам из списка.

Список может формироваться различными спо!собами, например как вывод некоторой командыили с помощью шаблонов shell.В другой форме for, когда список отсутствует, переменная var принимаетзначения позиционных параметров, переданных скрипту.Чтобы наглядно представить себе приведенные операторы, обратимся кконкретным примерам.Например, скрипт монтирования всех файловых системдлясистемы Solaris 2.5 включает в себя их проверку, исходя из данных, ука!занных в файлеПри этом используется оператор while.www.books-shop.com78Глава 1. Работа в операционной системе UNIXcat / e t c / v f s c k |w h i l e read special f s c k d e vfstype fsckpassmntoptsПострочно считывает записи файла vfsck и присваивает переменным#fsckdev и т. д.

значения соответствующих конфигурационныхdocase $special in' '* | ' ')# Игнорируем комментарииcontinuett Игнорируем строки, не требующие действияcontinueesacПоследовательно проверяем файловые системы с помощью утилиты#F $fstype $fsckdev >/dev/null 2>&1doneСкрипт очистки давно не используемых файлов во временных каталогах(обычно он запускается при загрузке системы) использует оператор for.for dir indofind $dir ! type ddone+7 execПри этом удаляются все файлы в указанных каталогах/usr/tmp ипоследний доступ к которым осуществлялся более недели назад.СелекторыОператор case предоставляет удобную форму селектора:case слово incommandcommandesacЗначение слово сравнивается с шаблонами, начиная с первого.

Если совпа!дение найдено, то выполняются команды соответствующего раздела, кото!рый заканчивается двумя символами ';'• Шаблоны допускают наличие масок,которые были рассмотрены нами в разделе "Подстановки, выполняемые ко!www.books-shop.com79Пользовательская среда UNIXинтерпретатором". Раздел с шаблономаналогичен разделу defaultв синтаксисе селектора switch языка С: если совпадения с другими шаблона!ми не произошло, то будут выполняться команды раздела '*)'.В качестве примера использования селектора приведем скрипт запуска иостанова системы печати в SCO UNIX.state=$lsetcase $state inif [ $9 = "2" o $9 = "3" ]thenexitfi[ f][ f]*)echo "usage $0esacВ случае, когда скрипт вызван с параметром start, будет произведен за!пуск системы печати.

Если параметр скрипта — stop, то система печатибудет остановлена. Запуск скрипта с любым другим параметром приведет квыводу сообщения об ошибке.ВводКак мы уже видели, присвоение значений переменным может осуществ!ляться явно или с помощью вывода некоторой программы. Команда readпредоставляет удобный способ присвоить переменным значения, считан!ные из стандартного потока ввода. Это может быть строка, введеннаяпользователем или считанная из файла в случае перенаправления потока.Команда read считывает строку из стандартного потока ввода и последова!тельно присваивает переменным, переданным в качестве параметров, зна!чения слов строки. Если число слов в строке превышает число перемен!ных, то в последней переменной будут сохранены все оставшиеся слова.Продемонстрируем это на простом примере:Текст скриптаecho "input:while readvar2 var3doecho varl=$varlecho var2=$var2echo var3 = $var3echo "input:doneЗапуск скрипта$input: пример работы команды readreadеще примерvar3=$Ⱦɚɧɧɚɹɜɟɪɫɢɹɤɧɢɝɢɜɵɩɭɳɟɧɚɷɥɟɤɬɪɨɧɧɵɦɢɡɞɚɬɟɥɶɫɬɜɨɦ%RRNVVKRSɊɚɫɩɪɨɫɬɪɚɧɟɧɢɟɩɪɨɞɚɠɚɩɟɪɟɡɚɩɢɫɶɞɚɧɧɨɣɤɧɢɝɢɢɥɢɟɟɱɚɫɬɟɣɁȺɉɊȿɓȿɇɕɈɜɫɟɯɧɚɪɭɲɟɧɢɹɯɩɪɨɫɶɛɚɫɨɨɛɳɚɬɶɩɨɚɞɪɟɫɭpiracy@books-shop.com80Глава 1.

Работа в операционной системе UNIXВ приведенном примере read в цикле считывает пользовательский ввод.Цикл завершается, когда достигнут конец файла (что эквивалентно пользо!вательскому вводупоскольку при этом read возвращает неуда!чу (код возврата равен 1) и while завершает работу. В первом цикле числовведенных слов превышает количество переменных, поэтому значение пе!ременной var3 состоит из двух слов. Во втором цикле значение var3 пусто.Система управления заданиямиКомандный интерпретатор может поддерживать управление заданиями.Для Bourne shellкоторый мы рассматриваем, систему управлениязаданиями включает парный ему интерпретаторВ остальном этотинтерпретатор имеет те же возможности.В системе управления заданиями каждая команда (простая или составная),которую пользователь запускает со своего терминала, называется заданием.Все задания могут выполняться либо в текущем режиме, либо в фоновомрежиме, либо быть приостановлены.

Характеристики

Тип файла
PDF-файл
Размер
8,11 Mb
Тип материала
Высшее учебное заведение

Список файлов книги

Свежие статьи
Популярно сейчас
Почему делать на заказ в разы дороже, чем купить готовую учебную работу на СтудИзбе? Наши учебные работы продаются каждый год, тогда как большинство заказов выполняются с нуля. Найдите подходящий учебный материал на СтудИзбе!
Ответы на популярные вопросы
Да! Наши авторы собирают и выкладывают те работы, которые сдаются в Вашем учебном заведении ежегодно и уже проверены преподавателями.
Да! У нас любой человек может выложить любую учебную работу и зарабатывать на её продажах! Но каждый учебный материал публикуется только после тщательной проверки администрацией.
Вернём деньги! А если быть более точными, то автору даётся немного времени на исправление, а если не исправит или выйдет время, то вернём деньги в полном объёме!
Да! На равне с готовыми студенческими работами у нас продаются услуги. Цены на услуги видны сразу, то есть Вам нужно только указать параметры и сразу можно оплачивать.
Отзывы студентов
Ставлю 10/10
Все нравится, очень удобный сайт, помогает в учебе. Кроме этого, можно заработать самому, выставляя готовые учебные материалы на продажу здесь. Рейтинги и отзывы на преподавателей очень помогают сориентироваться в начале нового семестра. Спасибо за такую функцию. Ставлю максимальную оценку.
Лучшая платформа для успешной сдачи сессии
Познакомился со СтудИзбой благодаря своему другу, очень нравится интерфейс, количество доступных файлов, цена, в общем, все прекрасно. Даже сам продаю какие-то свои работы.
Студизба ван лав ❤
Очень офигенный сайт для студентов. Много полезных учебных материалов. Пользуюсь студизбой с октября 2021 года. Серьёзных нареканий нет. Хотелось бы, что бы ввели подписочную модель и сделали материалы дешевле 300 рублей в рамках подписки бесплатными.
Отличный сайт
Лично меня всё устраивает - и покупка, и продажа; и цены, и возможность предпросмотра куска файла, и обилие бесплатных файлов (в подборках по авторам, читай, ВУЗам и факультетам). Есть определённые баги, но всё решаемо, да и администраторы реагируют в течение суток.
Маленький отзыв о большом помощнике!
Студизба спасает в те моменты, когда сроки горят, а работ накопилось достаточно. Довольно удобный сайт с простой навигацией и огромным количеством материалов.
Студ. Изба как крупнейший сборник работ для студентов
Тут дофига бывает всего полезного. Печально, что бывают предметы по которым даже одного бесплатного решения нет, но это скорее вопрос к студентам. В остальном всё здорово.
Спасательный островок
Если уже не успеваешь разобраться или застрял на каком-то задание поможет тебе быстро и недорого решить твою проблему.
Всё и так отлично
Всё очень удобно. Особенно круто, что есть система бонусов и можно выводить остатки денег. Очень много качественных бесплатных файлов.
Отзыв о системе "Студизба"
Отличная платформа для распространения работ, востребованных студентами. Хорошо налаженная и качественная работа сайта, огромная база заданий и аудитория.
Отличный помощник
Отличный сайт с кучей полезных файлов, позволяющий найти много методичек / учебников / отзывов о вузах и преподователях.
Отлично помогает студентам в любой момент для решения трудных и незамедлительных задач
Хотелось бы больше конкретной информации о преподавателях. А так в принципе хороший сайт, всегда им пользуюсь и ни разу не было желания прекратить. Хороший сайт для помощи студентам, удобный и приятный интерфейс. Из недостатков можно выделить только отсутствия небольшого количества файлов.
Спасибо за шикарный сайт
Великолепный сайт на котором студент за не большие деньги может найти помощь с дз, проектами курсовыми, лабораторными, а также узнать отзывы на преподавателей и бесплатно скачать пособия.
Популярные преподаватели
Добавляйте материалы
и зарабатывайте!
Продажи идут автоматически
6439
Авторов
на СтудИзбе
306
Средний доход
с одного платного файла
Обучение Подробнее