ОС Linux. Робота з інтерпретаторами команд

Інформація про навчальний заклад

ВУЗ:
Національний університет Львівська політехніка
Інститут:
Не вказано
Факультет:
Не вказано
Кафедра:
Не вказано

Інформація про роботу

Рік:
2008
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Операційні системи
Група:
ІТП

Частина тексту файла (без зображень, графіків і формул):

Міністерство освіти та науки України Національний університет «Львівська Політехніка» Кафедра ІСМ Звіт До лабораторної рботи № 3 З курсу:”Операційні системи комп’ютерних мереж” На тему:”ОС Linux. Робота з інтерпретаторами команд” Мета роботи Навчитися основам роботи з інтерпретаторами команд Linux. Вміти створювати командні скріпти Теоретичні відомості: Одразу ж після реєстрації у системі Linux переходить у робочий каталог користувача та запускає інтерпретатор команд (який ще називають оболонкою, shell). Оболонка отримує від користувача команди та виконує їх. В UNIX було розроблено декілька різних інтерпретаторів команд. Найбільш популярними та доступними в Linux за замовчуванням є оболонки bash (Bourne Again Shell), csh (C – shell), sh (Bourne shell). Командні скрипти – це послідовниості команд оболонки, створені у звичайному текстовому редакторі, наприклад, vim. Програма для базової оболонки Linux bash знаходиься у файлі /bin/bash Для визначення яка оболонка встановлена на комп”ютері можна вивести значення змінної оточення SHELL: echo $SHELL Якщо треба, наприклад завантажити оболонку C-shell, то досить набрати команду csh. Для повернення у попередню оболонку скористайтеся командою exit Оболонка, яку Linux запускає відразу ж після реєстрації користувача у системі, прописується у файлі паролів. Налаштування робочого середовища На початку сеанса роботи користувача Linux встановить для нього робоче середовище. Робоче середовище складається з двох частин. Перша частина, яку ще називають налаштуваннями термінала (terminal environment) визначає налаштування термінала. При використанні Linux на персональному комп”ютері терміналом є монітор та клавіатура. Друга частина, що називають середовищем оболонки (environment shell) керує поведінкою оболонки та програм, що запускаються. Налаштування термінала Незважаючи на те, що отримує та виконує команди користувача оболонка, усе, що ввів користувач спочатку мусить пройти через проміжну програму – драйвер пристрою. Драйвер терміналу виконує керування терміналом. Він приймає усі символи від користувача, та приймає рішення чи треба з ними щось зробити перед тим, як передати оболонці. З іншого боку, кожен символ, який видає оболонка повинен пройти опрацювання драйвером перед тим, як з”явитися на екрані. Характерною властивістю OC UNIX є те, що всі приєднані до системи пристрої виглядають для програм однаково – як файли. Це досягається використанням відповідних драйверів пристроів. Термінал приймає на вивід впорядковану послідовність символів, яка надходить з невеликою швидкістю. Драйвер пристрою впорядковує потік даних та посилає їх на термінал зі швидкістю 1200, 2400, 9600 та більше біт на секунду, додаючи до потоку стартові, стопові біти та біти контролю парності. Так як термінал завжди приєднано до системи, драйвер дозволяє визнгачити спеціальні, керуючі символи (control characters), які використовують як маркери кінця файлу та кінця рядка. За допомогою драйвера пристрою визначають керуючі символи, які можна надіслати процесу, що виконується (наприклад, сигнал переривання, який зупинить виконання процеса). Драйвер пристрою може працювати в одному з двох режимів – з розпізнаванням керуючих клавіш (cooked mode) та без розпізнавання (raw mode). У режимі без розпізнавання керуючих клавіш усі введені символи одразу ж передаються оболонці та програмі, що запущена в оболонці. Деякі програми, такі як текстові редактори або електронні таблиці потребують саме такого режиму та самі його встановлюють. Водночас, у режимі без розпізнавання керуючих символів неможливо, наприклад, перервати виконання програми якщо послати відповідний керуючий символ. При роботі термінала у режимі з розпізнаванням, кожна натиснута користувачем клавіша аналізується драйвером пристрою. Введені зичайні символи накопичуються у буфері, поки не буде натиснута клавіша, яка означає кінець рядка (Enter). Після отримання усього рядка драйвер аналізує його перед тим, як спрямувати до оболонки. Поведінка терміналу визначається десятками параметрів, більшість з яких встановлюються автоматично. У таблиці наведено деякі найбільш важливі символи керування Символ Призначення  Перервати (interrupt) Зупиняє програму яка виконується. В Linux для переривання використовують символ <Ctrl+C>  Видалити (erase) Видалити з буфера останній введенний символ. Використовують клавішу <Backspace>  Очистити (kill) Повністю очищує буфер вводу. Використовують символ <@>  Кінець рядка (End-of-line) Повідомляє про закінчення рядка – рядок требе передати з буфера оболонці або прикладній програмі. Використовується клавіша <Enter>  Кінець файла (End-of-file) Вказує оболонці на необхвдність завершити роботу (сеанс даного користувача) і перейти у режим вводу реєстраційної інформації для нового сеансу. Використовується символ <Ctrl+D>  Для роботи з керуючими символами використовують команду stty. Вивести на екран біжучі значення налаштувань термінала можна командою stty -a Налаштування середовища оболонки Створення середовища є частиною початку сеанса роботи користувача у системі. В кожного з процесів Linux є своє власне середовище. Можна казати, що програма виконується у своєму власному середовищі. Середовище складається з неякої кількості змінних та їх значень. Змінні зберігають інформацію про тип оболонки, адресу робочого каталогу користувача, тип термінала та ін. Деякі з них встановлюються підчас реєстрації у системі і не можуть бути змінені. Деякі можна змінювати. Можна також додавати нові змінні до середовища. Змінні середовища задаються так: VARIABLE = VALUE де VARIABLE – назва змінної, VALUE – її значення. Деякі змінні приймають значення з визначеної множини значень, наприклад, змінна типу терміналу: TERM = vt100 У таблиці наведено деякі, найбільш важливі змінні середовища. Змінна Пояснення  HOME=/home/login_name Визначає робочий каталог користувача. login_name – login-ім”я користувача  LOGNAME= login_name Змінна автоматично встановлюєтся рівним імені, під яким працює користувач  PATH = path Задає список каталогів, які система переглядає в пошуках потрібного файлу  PS1 = prompt Змінна визначає як буде виглядати запрошення у командному рядку.  PWD=directory Встановлюється автоматично. Визначає біжучий каталог  SHELL= shell Задає знаходження програми, що використовують в якості оболонки  TERM=termtype Задає тип терміналу  У змінній PATH окремі каталоги розділені двокрапками. Система переглядає їх у порядку запису. Наприклад, змінна PATH може мати таке значенння: /usr/muck:/bin:/usr/bin:/usr/local/bin /usr/muck = це каталог, створений користувачем. Всі стандартні програми Linux знаходяться у каталогах /bin та /usr/bin. Каталог /usr/local/bin часто використовується для команд доданих користувачами системи. Змінити біжуче значення змінної PATH та додати до неї каталог можна, наприклад, так: $ PATH=$PATH:newpath Символ $ означає, що зчитується значення змінної. Оболонка підтримує декілька спеціальних змінних. Іхні значення можна побачити, якщо скористатися командою env, що виводить список усіх змінних оточення. Наприклад, ця команда може згенерувати такий вивід: HOME=/usr/wrev SHELL=/bin/sh MAIL=/usr/mail/wrev LOGNAME=wrev PATH=/bin:/usr/bin:. TZ=PST8PDT PS1=$ TERM=vt100 де MAIL – шлях до поштової скриньки користувача, TZ – часовий пояс Розглянемо детальніше важливі змінні середовища Змінна HOME. Ця змінна визначає робочий каталог користувача. Цей каталог є біжучим одразу ж після реєстрації користувча у системі. Змінну HOME можна використовувати для написання командних скриптів, в яких використовують файли з робочого каталога. Наприклад, замість того, щоб написати команду grep $number /usr/wrev/sales/data.01, можна написати grep $number $HOME/sales/data.01 Це краще, тому що цю команду легше прочитати, якщо робочий каталог буде перенесено, аюо ж ім”я користувача змінено, то команда буде працювати команда буде працювати і для інших користувачів. Змінна PATH. У цій змінній визначені каталоги, які переглядає оболонка підчас пошуку потрібної команди. Для зручності можна зібрати усі командні скрипти в одному каталозі та прописати шлях до цього каталога у змінну PATH. Це можна зробити таким чином. Створіть каталог: mkdir $HOME/bin Перенесіть всі командні скрипти у цей каталог, використовуючи команду mv Додайте підкаталог у змінну PATH командою path=$path:$HOME/bin. Для того, щоб це додавання відбувалося кожного разу підчас реєстрації у системі, додайте цю команду у свій файл .profile Завдання назв файлів У більшості сучасних операційних систем, у тому числі і Linux, можна використовувати при завданні імен файлів шаблони (wild cards). Використовують такі шаблони: Символ Значення  * Довільний набір символів, крім крапки на початку назви файла  ? Довільний одиночний символ  [] Один символ з визначеного діапазону символів  Символ * (зірочка)- це один з найбільш часто вживаних символів – шаблонів. Він визначає довільну кількість довільних символів. Наприклад, рядок b* означає усі файли, назви якмх починаються на b. В одному виразі можна використовувати стівльки зірочок, скільки потрібно для визначення потрібної множини файлів. Наприклад, вираз *yy*.gif відповідає довільній назві файлу, що має yy в центральній частині свого імені. Треба бути уважним при використанні символу пробілу та *. Наприклад, команди lp *.txt та lp * txt будуть опрацьовані системою по-різному. Перша команда виведе на друк усі файли біжучого каталогу, що мають розширення txt. Натомість друга команда, в якій між символами * та t є пробіл сприйме введене як два різні аргументи (* та txt). Відповідно, будуть виведені на друк усі файли каталогу (*) та файл, що має назву txt. При виводі файлів з використанням символу * є одна особливість. Файли, назви яких починаються з крапки (які також чспсто вважають прихованими файлами) не відображаються. Для їх відображення необхідно явно задати крапку в імені. Наприклад, файл з іменем .reportrc може бути відображено, якщо використати таку команду: ls .*rep* Символ ? використовують для позначення окремого символа. Нехай у робочому каталозі є файли report1, report2, report10, report.dft, report.fin Варіанти застосування символу шаблону ? та результуючий вивід подано у таблиці Команда Результат  ls report? report1 report2  ls *.??? report.dft report.fin  Вираз [] використовують для завдання певного діапазону символів. Нехай на диску існують файли rep1,rep2,rep3, repx. Необхідно вибрати перші три. Для цього можна застосувати шаблон імені job[123] Вивести усі назви файлів, що починаються з заглавної букви можна застосувавши такий вираз: ls [A-Z]* Нехай є файли з назвами sales.91, sales.92, sales.93. Їх потрібно перенести у каталог obsolete. Використовуючи символи шаблонів це можна зробити таким чином: ср sales.9[0-2] obsolete Як і символ шаблону ? цифри у квадратних дужках [] означають рівно один символ. Можна перерахувати допустимі символи [123], або вказати діапазон їх значень [1-2]. Можна також вказати декілька діапазонів. Наприклад, вираз [A-Z, a-z] відповідає усім буквам алфавіту. Передавання даних між процесами з використанням каналів (pipes) Інколи буває необхідно використовувати вихідні дані однієї програми як вхідні для іншої. Замість того, щоб зберігати їх у проміжних файлах, можна використати механізм програмних каналів. Наприклад, щоб відсортувати файл sales, а потім роздрукувати його, можна використати таку команду: sort sales | lp Символ операції зв”язування каналом (|) ставиться між відповідними командами, що зв”язуються. Використовуючи цей символ, можна зв”язати і декілька команд. Наприклад, наступна команда бере список файлів, назви яких починаються з sales, сортує їх та виводить результат на друк. cat sales* | sort | lp Використання змінних оточення Змінні оболонки відіграють важливу роль для налаштування та керування роботою ОС. Оболонка має інтерпретатор програмної мови, в якій важливу роль відіграють змінні оболонки. Змінні оболоки зберігаються системою у вигляді текстових рядків. Якщо дві змінні розташовані у команді поряд? то відповідні їм рядки символіів об”єднуються. Наприклад. якщо є дві змінні X = hello та Y= world, то вираз $X$Y буде інтерпретуватися системою як helloworld. Команда echo $Х $Y виведе на екран hello world Якщо виконання підстановки є неоднозначним для системи, вона обирає найпростіший шлях. Наприклад $XY буде інтерпретовано як helloY. Водночас, якщо існує змінна XY, то система підставить її значення. У сумнівних випадках треба використовувати дужки для завдання порядку підстановки. Наприклад, вираз $(X)Y буде вказувати системі. що спочатку треба підставити значення змінної X, а потім приєднати Y. Підстановка результата виконання команди Після підстановки значень змінних оболонка ще раз переглядає рядок у пошуку команд. включених як параметр у командний рядок (command substitution). Якщо таку команду знайдено, то команда-параметр виконується і її результат проставляється у командний рядок замість команди-параметра. command-1 parameter `command-2` Треба бути уважним при використанні символів подвійних лапок, апострофа (одиночних лапок) та зворотніх лапок. Детальніше правила використання лапок наведені у таблиці. Символ Значення  “ Лапки відключають аналіз універсальних символів та виразів у назвах файлів та виділення параметрів. Однак, підстановка значень змінних та виконання команд відбувається  ' Відключає синтаксичний розбір. Усе, що міститься в одинарних лапках передається системі одним параметром  ` Рядок символів у зворотніх лапках сприймається к одна команда. Ця команда виконується, її стандартний вивід підставляється у первинну команду.  Розглянемо наступний командний рядок: echo Today\'s date and time are `date` Результатом його виконання буде: Today's date and time are Mon May 18 14:35:09 EST 1994 Зверніть увагу, що у тексті команди перед апострофом поставлено символ \. Майже кожен не алфавітно-цифровий символ має спеціальне значення для оболонки. Для того, щоб виключити інтерпретацію символа оболонкою, треба перед символом використати знак \. Якщо в тексті зустрічається сам знак \. то замість нього потрібно поставити \\. Групи команд та породжені оболонки Звичайно кожна команда завершується символом <Enter>. В деяких випадках, однак вигідно розмістити декілька команд в одному рядку. При цьому команди розділюються символами ; command-1; command-2, command-3 Оболонка сприйме символ ; як символ нового рядка Якщо потрібно переспрямувати вивід відразу для декількох команд, можна сформувати групу команд у такому форматі: {command-1,command-2} > output-file Вивід групи команд може бути переспрямовано у програмний канал: {command-1,command-2} | command-3 Це означає, що спочатку виконується command-1 і її вивід надходить на вхід command-3, а потім – виконується command-2 і її вивід також надходить на вхід command-3. Команди, що виконуються облонкою таким чином можуть змінювати змінні оточення та біжучий каталог. Для того, щоб цього не відбулося можна виконати у породженій оболонці (subshell), залишаючи усі налаштування біжучої оболонки без змін. Для цього замість фігурних дужок потрібно використати звичайні: (command-1,command-2) | command-3 При цьому command-1 та command-2 будуть виконані в окремій оболонці а їх вивід (вже у біжучій оболонці) буде спрямовано на вхід command-3 Редагування команд оболонки та використання псевдонімів Редагування команд дозволяє змінити помилково введену команду. Використання Історії команд дає змогу повторно використовувати попередньо введені команди без потреби їх повторного набирання на клавіатурі. Призначення псевдонімів (aliases) дає змогу замінити одне позначення команди іншим. Скорочений ввід команд допомагає користувачу доповнюючи частково введену назву файла. Редагування команд Якщо значна частина команди вже введена, а користувач помітив помилку вводу, команду можна відредагувати не набираючи її спочатку. Для цього треба натиснути клавішу <Esc>. Система перейде у режим редагування та запустить редактор (vi). Перегляд історії команд Оболонка дозволяє переглядати поперередньо введені команди та виконувати їх знову. З використанням можливості редагування команд це спрощує процес роботи, особливо якщо деякі команди повторюються або відрізняються незначно. Команда history виводить перенумерований список останньо виконаних команд. Команду можна повторно виконати якщо набрати !<n> де n – номер команди зі списку. Для вибора команди можна також користуватися клавішою <Up> Використання псевдонімів команд Механізм призначення псевдонімів дозволяє дати команді інше ім”я. Наприклад, можна поміняти відому команду відображення інформації з “підручника” - man, замінивши її на help: alias help=man Псевдоніми можна призначати і складним командам з параметрами. Наприклад, розглянемо команду, що виводить список файлів у біжучому каталозі відсортований у порядку останнього часу їх використання, так що останньо змінений файл буде знаходититися на початку списку. ls -art Для скорочення запису команди замінимо іі псевдонімом. aliase timedir="ls -art" Символи подвійних лапок необхідні, так як оболонка вважає, що псевдонім закінчується символом пробілу, або нового рядка. Скорочений ввід команд При вводі назв файлів оболонка дозволяє не закінчувати назву файла, а замість того натиснути клавішу <tab>. Після цього система знайде файл, що починається з вже введених користувачем символів. Якщо таких файлів декілька, то система видає звуковий сигнал. Якщо користувач натисне клавішу <tab> два рази підряд, оболонка відобразить список усіх файлів, назви яких починаються з вказаних символів Робота з командними скріптами оболонки Оболонка сприймає команди користувача та організовує їх виконання системою. Команди можна вводити з клавіатури або з файла, Використання файла для збереження команд має певні переваги – набори команд можна повторно використовувати, їх зручно редагувати. Для виконання файлу досить набрати його ім”я (текстовий командний файл треба спочатку подати системі як виконувальний, змінивши його властивості). В командних скриптах можна використовувати змінні, умовні оператори та оператори керування. Це додатково збільшує їхню корисність. Нехай користувач зазвичай починає свій робочий день аналізуючи хто ще працює з його машиною, виводить список справ на сьогодні та біжучий час. Всього цього можна доконати такими командами: who calendar date Якщо розмістити ці команди у файл (наприклад, з іменем whatsup), то цей файл можна виконати як у будь-яку іншу команду системи. Попередньо треба змінити властивості цього файлу помітивши його як виконувальний командою: chmod +х whatsup Після цього файл можна виконати, наприклад спрямувавши його вивід у файл info whatsup > info Протестувати скрипт та вивести результати усіх проміжних кроків можна командою: sh -х script-name де script-name – це назва файлу скріпта. Написання програм Мова яка використовується для написання скріптів є достатньо простою та одночасно потужною. Розглянемо деякі найбільш вживані оператори та конструкції цієї мови. Команда echo Використовуючи команду echo можна вивести на екран довільні повідомлення. Її часто використовують для виводу діагностичної та відлагоджувальної інформації. Вивід команди echo також можна переспрямувати у файл. Наприклад, можна вивести echo “Starting the program” ....... echo “Completed all steps OK” Коментарі Будь- яка професійно розроблена програма мусить містити коментарі, які полегшують її розуміння та супровід. В оболонці bash на коментар починається символом #. Символи після знаку коментаря оболонкою ігноруються. Наприклад, прокоментована програма може виглядати так: #Название: whatsup #Написан: 1/19/97, Patty Stygian #Назначение: Показати хто працює в системі, #заплановані справи та дату echo " Let's see who is on the system." who # Ну і хто зараз працює ? echo " Що треба зробити і де треба бути ? " calendar # Переглянемо список робіт date # Сьогоднішня дата echo " All done" Використання змінних у командних скриптах Для того, щоб користуватися змінними треба знати, як присвоювати їм нові значення та зчитувати їх. Присвоєння нових значень виконується одним з таких способів: безпосереднім присвоюванням використанням команди read через параметри з командного рядка в результаті підстановки результатів виконання команди Безпосереднє присвоювання Це найпростіший спосіб присвоїти значення змінній. Цього можна доконати, наприклад, так: myemail=edsgar@crty.corn При цьому не дозволяється використовувати пробіли по обох боках знаку рівності. Якщо пробіли зустрічаються у новому значенні змінної, то таке значення треба заключити у подвійні лапки, наприклад: myoffice="Room 21, Suite С" Кожен раз, коли оболонка зустрічає знак $ з назвою змінної, вона підставляє замість них значення змінної, наприклад: echo " My e-mail address is $myemail" echo " My office is $myoffice" Нехай користувач потребує часто копіювати файли у каталог /corporate/info/public/sales Зазвичай, для того, щоб провести копіювання користувач вводить команду: ср current /corporate/info/public/sales Для спрощення роботи буде доцільним присвоїти значення шляху до каталога новій змінній: соrpsales=/соrporate/info/public/sales Після цього, команду копіювання можна виконати і таким чином: ср current $corpsales Оболонка замінить змінну corpsales її значенням та виконає потрібну команду. Використання команди read Команда read приймає значення змінної з пристрою стандартного вводу та присвоює його змінній. У нижченаведеному прикладі користувач вводить значення змінної filename з клавіатури. # Назва: copycorp # Призначення: скопіювати вказаний файл у каталог # /corporate/info/public/sales соrpsales=/соrporate/info/public/sales echo "Enter name of file to copy" # просити користувача # ввести назву файла read filename # ввести назву файла ср $filename $corpsales # виконати копіювання Команда read призупиняє виконання скріпта та чекає на ввід користувачем значення змінної з клавіатури. Ввід завершується клавішою <Enter>. Після цього виконання скріпта продовжується. Якщо підчас очікування вводу натиснути <ctrl-d>, то виконання скріпта буде зупинено. Використання параметрів командного рядка Підчас синтаксичного розбору командного рядка оболонка зв”язує параметри зі змінними. Як звичайно, параметри розділюються пробілами. Змінні, що відповідають параметрам, отримують назви $0,$1,.... Назві команди відповідає змінна $0, а решта змінних перенумеровані у порядку їх розташування у командному рядку. Розглянемо наступний приклад, що ілюструє використання параметрів у командному рядку. # Назва: shovars # Призначення: демонстрація використання # змінних у командному рядку echo $0 echo $2 $4! echo $3 Нехай первинний командний рядок виглядав так: shovars -s hello "look at me" bart В результаті виконання скрипта отримаємо такий вивід: shovars hello bart! look at me Розглянемо складніший приклад, в якому скрипт спочатку копіює файли у тимчасовий каталог, а потім видаляє їх. #Назва: remfl #Назначение: скопіювати файли у каталог/tmp # а потім видалити їх # з біжучого каталога #спочатку скопіювати $* в /tmp ср $* /tmp #а тепер видалити файли rm $* Позначення $* відповідає усім параметрам команди Підстановка результатів виконання команди Змінній можна присвоїти і значення в результаті виконання команди. Наприклад, така команда збереже у змінній curcat значення біжучого каталога: cwd=`pwd` Наступний скрипт змінює назву файла додаючи до нього біжучу дату: #Назва: stamp #Призначення: переіменувати файл: додати #до назви біжучу дату td=`date +%m%d%y` #перейменувати файл mv $1 $1.$td Використання у програмах спеціальних символів Як відомо, оболонка надає спеціальні значення символам > $% та ін. Як зробити, щоб оболонка сприйняла символи керування буквально, не асоціюючи з ними додаткових дій ? Це можна зробити декількома способами. Можна заключити частину команди зі спеціальними символами у одинарні лапки. Наприклад, наступна команда виведе рядки файла customers що починаються зі слова Mary: grep '^Mary ' customers Символ ^ задає для команди grep режим пошуку з початку рядка Можна також використати і подвійні лапки. При цьому система ігнорує більшість службових символів (крім $ та `). Наприклад, результатом виконання команди echo " ** Please enter your response -->" буде ** Please enter your response --> Однак, в результаті виконання такої команди: echo ">>>Thanks for the $5, $LOGNAME" буде підставлено значення п”ятого аргумента та змінної logname Для завдання ігнорування оболонкою поодиночного символа треба використовувати символ зворотної косої риски, наприклад команда виведе $5 замість того щоб підставити значення аргумента: echo " >>>Thanks for the \$5, $LOGNAME" Використання команд керування процесом виконання Серед операторів мови оболонки є два типа головних операторів керування: оператори циклу та умовні. З використанням умовних операторів if...then та case можна виконувати різні набори коду залежно від значень певних змінних. Розглянемо використання базових операторів керування на прикладах. Оператор case Оператор case дозволяє вибрати один з декількох варіантів дій залежно від значення змінної. Синтаксис оператора case: case word in pattern) statement(s);; pattern) statement(s);; esac Значення порівнюється з починаючи з першого. Якщо є співпадіння, то виконується відповідний оператор statement. Приклад програми: # Назва: ShrtMenu # Призначення: Надати користувачу вибір: # роздрукувати файл, видалити файл # або вийти з програми # Вивести меню echo 'Please choose either P, D, or Q to' echo " [P]rint a file" echo " [D]elete a file" echo " [Q]uit" # Отримати відповідь користувача read response # Використати case для вибору дій case $response in P|p) echo "Name of file to print?" read filename lp $filename;; D|d) echo "Name of file to delete?" read filename rm $filename;; *) echo "leaving now";; esac У тексті програми для перерахування можливих відповідей користувача використовувується запис P|p, що означає вибір великої, або малої літери p. Варіант вибору * означає усі інші варіанти вводу. Таким чином, якщо користувач введе символ, відмінний від P,p,D,d то буде виконуватися код виходу з програми. Визначення статусу завершення команди Оболонка завжди повідомляє про статус завершення виконання команди, або командного скрипта. Цей статус (exit status) подано у змінній $?. Наприклад, якщо команда grep "American Terms" customers використовується для пошуку виразу “American Terms” у файлі customers, то прочитати значення змінної статусу виконання можна командою echo $? Якщо потрібний вираз було знайдено, то значення статусу буде 0, інакше – інше число Оператор if...then...else..fi Оператор if..then..else..fi – це операторр галуження, який залежно від значення виразу дозволяє виконувати одну з гілок програми. Частина else оператора не є обов”язковою. Формат оператора такий: if cond_statement(s) then statement(s)1 [else statement(s)2] fi Якщо статус виконання операторів cond_statement(s) є 0 (успішний), то виконується набір операторів statement(s)1, інакше - statement(s)2 Використання операторів циклу Оболонка працює з двома типами операторів циклу – for та while. Цикл for виконує дії для вказаного набору значень або файлів. Наприклад, щоб скопіювати усі файли, що мають розширення txt у каталог textdir, можна скористатися командою: for i in *.txt do cp $i textdir/$i done Оболонка інтерпретує оператор та присвоює змінній i значення кожного файлу біжучого каталогу, що має розширення txt та виконує для нього копіювання у каталог textdir. Розглянемо приклад використання оператора while. Нижченаведена програма повідомляє користувача про зміну статуса його файла поштової скриньки та прихід електронної пошти. Для порівняння версій файлів використовується команда diff. Програма працює у фоновому режимі і кожні 30 секунд перевіряє наявність нової пошти. #Назва: checkmail #Призначення: Повідомити користувачу про зміну у поштовій # скринці ср $MAIL omail # Зробити копію скриньки для порівняння #MAIL – це змінна що відповідає поштовій скринці #поки omail та $MAIL співпадають, продовжити цикл while diff omail $MAIL > /dev/null do ср $MAIL omail sleep 30 # очікування, пауза у 30 сек done #Відбулися зміни echo "New mail !!" | write $LOGNAME. Висновок На цій лабораторній роботі я навчився основам роботи з інтерпретаторами команд Linux. Навчився створювати командні скрипти.
Антиботан аватар за замовчуванням

27.03.2013 10:03-

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Ділись своїми роботами та отримуй миттєві бонуси!

Маєш корисні навчальні матеріали, які припадають пилом на твоєму комп'ютері? Розрахункові, лабораторні, практичні чи контрольні роботи — завантажуй їх прямо зараз і одразу отримуй бали на свій рахунок! Заархівуй всі файли в один .zip (до 100 МБ) або завантажуй кожен файл окремо. Внесок у спільноту – це легкий спосіб допомогти іншим та отримати додаткові можливості на сайті. Твої старі роботи можуть приносити тобі нові нагороди!
Нічого не вибрано
0%

Оголошення від адміністратора

Антиботан аватар за замовчуванням

Подякувати Студентському архіву довільною сумою

Admin

26.02.2023 12:38

Дякуємо, що користуєтесь нашим архівом!