ПЕРЕЛІК ДИСЦИПЛІН:
  • Адміністративне право
  • Арбітражний процес
  • Архітектура
  • Астрологія
  • Астрономія
  • Банківська справа
  • Безпека життєдіяльності
  • Біографії
  • Біологія
  • Біологія і хімія
  • Ботаніка та сільське гос-во
  • Бухгалтерський облік і аудит
  • Валютні відносини
  • Ветеринарія
  • Військова кафедра
  • Географія
  • Геодезія
  • Геологія
  • Етика
  • Держава і право
  • Цивільне право і процес
  • Діловодство
  • Гроші та кредит
  • Природничі науки
  • Журналістика
  • Екологія
  • Видавнича справа та поліграфія
  • Інвестиції
  • Іноземна мова
  • Інформатика
  • Інформатика, програмування
  • Юрист по наследству
  • Історичні особистості
  • Історія
  • Історія техніки
  • Кибернетика
  • Комунікації і зв'язок
  • Комп'ютерні науки
  • Косметологія
  • Короткий зміст творів
  • Криміналістика
  • Кримінологія
  • Криптология
  • Кулінарія
  • Культура і мистецтво
  • Культурологія
  • Російська література
  • Література і російська мова
  • Логіка
  • Логістика
  • Маркетинг
  • Математика
  • Медицина, здоров'я
  • Медичні науки
  • Міжнародне публічне право
  • Міжнародне приватне право
  • Міжнародні відносини
  • Менеджмент
  • Металургія
  • Москвоведение
  • Мовознавство
  • Музика
  • Муніципальне право
  • Податки, оподаткування
  •  
    Бесплатные рефераты
     

     

     

     

     

     

         
     
    Адміністрування локальних мереж
         

     

    Комп'ютерні науки
    1. Загальний огляд архітектури UNIX систем.

    Короткий огляд UNIX подібних операційних систем.

    У даний момент, не існує стандартної системи UNIX, замість цього ви зустрінетесь з безліччю операційних систем, що мають свої назви та особливості. Але за цими особливостями і назвами простежується загальна архітектура, інтерфейс і середовище програмування. Всі ці системи так чи інакше є спорідненими Із-за своєї простоти, ясності, легкої здатності до розширення і модифікації UNIX стали переносити на багато платформ. Однак незважаючи на безліч реалізацій базової системи, серед усіх них можна чітко виділити дві основні гілки: System V UNIX і BSD UNIX. Відмінності між ними не носять прінціпіяльний характер і часто сказати до якої з гілок належить та чи інша реалізація операційної системи буває складно. До основних відмінностей між System V і BSD подібними системами можна віднести термінальну ініціалізацію, імена конфігураційних файлів і файлів ініціалізації системи, стандартний розмір блоків файлової системи, управління терміналами, різне відображення інформації про процеси т.п. Одним словом принципових відмінностей з точки зору користувача між різними гілками операційної системи UNIX не існує. Розглянута Ця операційна система HP-UX 10.20 є однією з реалізацій UNIX випущеної фірмою Hewlett-Packard. За своєю структурою це чиста System V подібна 32-х розрядна операційна система, що включає підтримку симетричних багатопроцесорних систем (SMP), файлових систем більшого обсягу (до 128Гб) і розширеного віртуального адресного простору (до 3.75 Гб).

    Основні причини популярності UNIX.

    Які ж причини популярності цієї операційної системи? У першу чергу це більш ніж трьох десятирічний вік. За цей період вона повністю пройшла перевірку часом. По-друге код системи практично повністю написаний на мові високого рівня С, що зробило її простою для розуміння, внесення змін і перенесення на інші апаратні платформи. Деякі з версій UNIX поставляються разом з вихідними текстами, однак навіть попри те, що більшість UNIX поставляється у вигляді бінарних файлів, система все одно залишається легко розширюваної та замовною. Так само слід відзначити той факт що UNIX в спочатку створювалася як розрахована на багато користувачів і багатозадачна система орієнтована в першу чергу на виконання серверних функцій. Слід відзначити і той факт що UNIX практично з самого початку створювалася як мережна операційна система (навіть графічна оболонка UNIX система X Window є повністю мережевою), що дозволило їй зайняти лідируючі позиції на ринку серверів для Інтернет додатків і дало потужні вбудовані засоби віддаленого адміністрування. Чи не маловажну роль в популярності UNIX зіграла її єдина ієрархічна файлова система з уніфікованим доступом не тільки до файлів даних але і до апаратних ресурсів таким як диски, термінали, принтери, мережа, пам'ять и.т.п.

    Структура операційної системи.

    У завдання операційної системи UNIX входить безпосереднє управління ресурсами комп'ютера, розподіл їх між користувачами, приховуючи від останніх внутрішню архітектуру апаратного забезпечення, шляхом надання уніфікованого інтерфейсу доступу до апаратних ресурсів. До апаратних ресурсів комп'ютера відноситься в першу чергу обчислювальні ресурси процесора, пам'ять та дисковий простір, а також ряд периферійних пристроїв, таких як накопичувачі на магнітних стрічках, принтери, термінали, мережеві адаптери т.п. Найбільший загальний погляд дозволяє побачити дворівневу модель системи в тому вигляді як вона представлена на рис. 1.1.



    Рис 1.1

    У центрі знаходяться апаратні ресурси комп'ютера з якими безпосередньо взаємодіє ядро операційної системи ізолюючи прикладні програми користувача від особливостей апаратної архітектури. Ядро має певний мінімальний набір послуг, що надаватимуться прикладним програмам. У першу чергу це операції вводу-виводу (відкриття, закриття, читання, запис та керування файлами), створення і управління процесами, організація синхронізації й обміну даними між процесами, управління пам'яттю (реальної і віртуальної).
    Другої найважливішою функцією виконуваної ядром є захист операційної системи від руйнування з боку користувача програм і реалізація механізмів захисту даних в багатокористувацької середовищі. Всі призначені для користувача програми користуються послугами ядра за допомогою системних викликів.
    На другому рівні знаходяться програми, як для користувача, що забезпечують інтерфейс з користувачем так і системні, що керують роботою системи. Незважаючи на різні виконувані завдання, схеми їх взаємодії з ядром однакові.

    Завдання виконуються ядром операційної системи

    Зупинимося докладніше на структурі ядра операційної системи. Функціонально його можна представити що складається з трьох основних підсистем: підсистеми управління процесами і пам'яттю, підсистеми вводу-виводу і файлової підсистеми. Всі сучасні мікропроцесори підтримують віртуальну пам'ять, захищений і багатозадачність роботи. Останній передбачає виділення кванта процесорного часу певного завдання з подальшим перемиканням на інше завдання
    Кожне завдання має ідентифікатор рівня захисту, деякі команди з системи команд процесора можуть виконуватися на будь-якому рівні захисту, але є привілейованих команди виконання яких можливе лише завданням має нульовий рівень привілеї. Ядро операційної системи працює на нульовому рівні захисту, тільки воно має безпосередній доступ до фізичної пам'яті, системним регістрів процесора і портів вводу виводу. Користувацькі програми спілкуються з ядром за допомогою системних викликів, що представляють собою команду приводить до перемикання процесу в контекст ядра, передачею параметрів ядру. Потім ядро перевіряє коректність параметрів, права користувацького процесу на можливість виконання даного системного виклику і лише після цього переходить до безпосереднього виконання всіх низькорівневих дій необхідних для виконання користувацького запиту. Завдяки цьому досягається захист критично важливих даних ядра від випадкового або навмисного руйнування з боку користувача.
    Другий з найважливіших функцій ядра є обробка виняткових ситуацій що виникають в результаті роботи операційної системи і представляє собою програмні переривання. До останніх відносяться помилки захисту (на приклад спроба прикладної програми отримати доступ до портів введення-виведення чи чужий області пам'яті), помилки в роботі обладнання, а також системні події виникають при нормальній роботі операційної системи. Деякі з виключних ситуацій призводять до аварійного завершення системи (помилки обладнання або виняткова ситуація виникла під час обробки виняткової ситуації), деякі до аварійного завершення програми користувача при цьому можливий скидання на диск у файл образу процесу викликав виняткову ситуацію c метою подальшого аналізу відладчиком, а деякі просто життєво необхідні для нормального функціонування операційної системи (один з таких виняткових ситуацій буде розглянута нижче).

    Підсистема керування процесами.

    Запущена на виконання програма породжує в системі один або більше процесів. Підсистема управління процесами відповідає за створення та знищення процесів, розподілу ресурсом між процесами, синхронізацію і між процесами. Так як в даний момент часу на одному процесорі може виконуватися лише одне завдання ядро операційної системи в залежності від пріоритету задачі виділяє їй певний квант процесорного часу після закінчення якого відбувається перемикання на наступну задачу. При цьому виключається можливість захоплення всіх ресурсів процесора одним завданням і створюється ефект паралельного виконання кількох завдань.

    Підсистема управління пам'яттю.

    Підсистема управління пам'яттю управляє виділенням, розміщенням та звільненням пам'яті для прикладних задач. Прикладні програми ніколи не використовують фізичну пам'ять безпосередньо, тому що всі сучасні операційні системи реалізують так звану віртуальну пам'ять обсяг якої може перевищувати обсяг фізичної пам'яті. При цьому задіяно механізми сторінкової адресації пам'яті в яких всі віртуальний адресний простір розділяється на невеликі блоки - сторінки. Розмір сторінки варіюється в залежності від архітектури, для архітектури HP PA-RISC це 2К, для Intel це 4K. Кожна сторінка має спеціальні атрибути які визначають права доступу до неї, факт присутності у фізичній пам'яті, частоту звернень т.п. Перетворення з віртуального адреси у фізичний здійснюється апаратно. Дана схема адресації дає ряд незаперечних переваг які використовуються всіма сучасними операційними системами. А саме: можливість економії фізичної пам'яті шляхом спільного використання одних і тих же сторінок віртуальної пам'яті різними процесами, реалізація розділяється пам'яті, а також можливість використання вторинних пристроїв як пристрої пам'яті що дозволяє завданням задіяти віртуальної пам'яті більше ніж є реально фізичної пам'яті в системі. Реалізується це таким чином: у разі браку фізичної пам'яті, ядро скидає на зовнішній носій (як правило диск) сторінки до яких найбільш довго не було звернень, а так само при зверненні до сторінки якої реально немає у фізичній пам'яті процесор генерує виняткову ситуацію обробник якої завантажує сторінку назад з зовнішнього носія у фізичну пам'ять. Цей процес носить назву пейджинг або свопінг.

    Файлова підсистема.

    Файлова підсистема ядра надає уніфікований інтерфейс для доступу до даних знаходяться на дисках та інших зовнішніх пристроях. Вона забезпечує контроль прав доступу до файлів з боку прользователя тому кожен файл має атрибути доступу визначають права доступу до нього з боку певного прользователя або груп користувачів.

    Підсистема вводу-виводу.

    Підсистема вводу-виводу обслуговує запити файлової підсистеми і підсистеми управління процесами, щоб отримати доступ до периферійних пристроїв (мережеві адаптери, диски, термінали ...). Також вона забезпечує буферизацію і кешування даних і взаємодіє з драйверами пристроїв - спеціальними модулями ядра безпосередньо працюють із зовнішніми пристроями.
    2.
     Шеллі і основні команди HP-UX.

    2.1.1 загальне знайомство з шеламі
    2.1.2 Зміна Шела
    2.2.1 Bourne Shell
    2.2.1.1 Основні можливості Shell.
    2.2.1.2 Shell скрипти
    2.2.1.3 Основи програмування на мові shell
    2.2.1.4 Деякі спеціальні команди

    Загальне знайомство з шеламі

    Шелл це інтерфейс між операційною системою і користувачем. Шелл інтерпретує для користувача введення і дає вказівки операційній системі виконати ті чи інші дії. Шелл можна також розглядати як мова програмування.

    Bourne Shell. Це самий старший з шелов який був написаний Стефаном Борном в Лабораторії Беелла. Цей шелл є шолом за замовчуванням для HP-UX користувачів і довгий час був стандартом де факто.
    Bourne Shell не має у своєму арсеналі ні інтерактивних можливостей ні складних програмних конструкцій на відміну від С та Korn Шелл.

    C Shell. Цей йшов був розроблений Біллом Джоєм в Каліфорнійському Університеті Берклі. Його синтаксис має схожість з мовою програмування С. Він також має інтерактивний інтерфейс наприклад історію команд та розкриття імен файлів.

    Korn Shell. Він є відносно новим шолом розробленим Девідом Корном в Лабораторії Белла і є догори сумісним з більшістю можливостей Bourne Shell. Так само як і С shell він має інтерактивні можливості, але виконується швидше має розширені можливості редагування командного рядка.

    POSIX shell. Цей шелл базується на стандарті визначеному в Portable Operation System Interface (POSIX) - IEEE P1003.2. Цей стандарт був розроблений для прикладних і системних програмістів. Він фактично визначає стандарт на інтерфейс операційної системи. Більшість можливостей POSIX Shell дуже сильно схожі з аналогічними можливостями Korn Shell-a. Ми будемо розглядати обидва ці Шела єдине, вказуючи лише невеликі відмінності між ними. POSIX Shell має теж ім'я що і Bourne Shell тому він поміщений в/usr/bin/posix директорію на відміну від Bourne Shell, який знаходиться в директорії/usr/bin.

    Key Shell. Це оболонка для Kourn Shell-a розроблена фірмою Hewlett-Packard. Вона дозволяє використовувати меню і онлайн допомогу допомагаючи в побудові команд та виконання ряду часто зустрічаються завдань, таких як перегляд, редагування та друк файлів, перегляд вмісту директорії т.п. Побудована вона таким чином що користувач може сам надалі
    розширювати її можливості.

    Bash. Назва цього Шела розшифровується як Bourne Again Shell. Він би розроблений консорціумом Free Software Foundation і незважаючи на те що за замовчуванням він відсутній у стандартній поставці HP-UX 10.20, в наслідок своїх потужних функціональних можливостей він користується величезною популярністю серед користувачів і адміністраторів HP-UX. Його інтерпретатор команд сумісний з Bourne Shell. Також він вмістив в собі корисні можливості Korn C Шелл. Він розроблявся в сооответствіі зі специфікаціями IEEE POSIX Shell and Tools specification (IEEE Working Group 1003.2).

    2.1.2 Зміна Шела

    Для того щоб визначити Ваш системний шелл досить відразу після логіна виконати команду:

    echo $ SHELL

    вона показує вміст змінної SHELL в яку система прописує Ваш шелл встановлений за замовчуванням. Для тимчасової зміни Шела досить виконати запуск бажаного Шела в поточному:

    $ Ksh запуск Kourne Shell
    $ Ps друк списку процесів
    PID TTY TIME COMMAND
    12320 pts/2 0:00 sh Bourne shell
    12322 pts/2 0:00 ksh Korn Shell
    12323 pts/2 0:00 ps
    $ Exit вихід з Korn Shell-a

    Для постійної зміни Шела що встановлюється системою після входу (login shell) необхідно виконати команду:

    chsh

    Зауваження: список шелов доступних в системі для користувачів знаходиться у файлі/etc/shells

    Bourne Shell.

    2.2.1.1 Основні можливості Shell.

    Запуск шелла і вихід з шелла

    Для запуску Bourne Shell досить ввести sh в поточному Шелі. Вихід з Шела можливий або по команді exit або ввівши в терміналі символ Коца файлу Ctrl-D.

    Послідовне виконання команд.

    Кілька команд можна послідовно виконувати розмежовуючи крапкою з комою. Наприклад, фрагмент

    $ Who
    $ Ps-ef
    $ Ls-l
    і
    $ Who; ps-ef; ls-l
    дадуть повністю однаковий результат.

    Фонове виконання.

    Запуск програми у фоновому режимі (без блокування поточного Шела) досягається додаванням в кінець команди знака &

    Перенаправлення вводу-виводу.

    Кожна запущена програма має три асоційованих каналу: стандартний ввід, стандартний висновок і стандартний канал діагностики помилок. За замовчуванням стандартний ввід закріплений за клавіатурою а стандартний висновок і канал помилок закріплені за монітором. Однак шелл дозволяє зв'язати ці канали з файлами абсолютно прозоро для виконуваної программми, тому що зміни виведення та введення здійснюються на системному рівні. Приклади перенаправлень вводу-виводу:

    Символ Функція Приклад
    <Перенаправлення введення з файлу program
    > Перенаправлення виводу в файл program> out_file
    >> Перенаправлення виводу у файл з додаванням Program>> out_file
    Пайп. Дві або більше програм можуть бути об'єднані таким чином що результат однієї програми потрапить на вхід інший. При цьому дані від однієї програми до іншої прямують через програмний канал, наприклад:

    program1 | program2 | program3

    або більш реалістичний приклад:

    ls-l/etc | more

    Примітка: пайпи завжди працюють лише в одному напрямку - зі стандартного виходу однієї до стандартного входу іншої програми.

    Розширення імен файлів.

    З метою зменшення кількості набраних символів під час введення імен файлів йшов підтримує метасимволи. Нпрімер для того, щоб вивести лістинг всіх файлів в поточній директорії імена яких починаються на літеру a досить скористатися командою ls-la *

    нижче наведена таблиця основних метасимволів

    Метасимволи Опис
    * Чи означає любого символу у будь-якій кількості
    ~ Чи означає шлях до домашнього каталогу
    ? Будь-який символ в кількості один або більше
    [...] Рівність будь-якого одного з символів укладених у дужки. Пара символів розділена знаком мінус означає будь-який символ з проміжку між ними. Наприклад [a-zA-Z] - любаялатінская буква


    2.2.1.5 Shell скрипти

    Виконання скриптів.

    Кілька команд обьедененних однією послідовністю виконання називається скриптом. Наприклад послідовне виконання команд, пайпи є простими скриптами. Зазвичай команди з яких складаються скрипти зберігають у файлах. Для запуску скрипта можна скористатися двома методами:

    sh

    або встановити атрибут виконуваності на файл командою

    chmod + x

    Після чого можна виконувати скрипт:

    ./

    Виведення тексту.

    Для формування висновку текстової інформації в скриптах використовують команду

    echo "рядок"

    Файл.profile.

    Кожного разу під час входу в систему Bourne Shell автоматично запускає файл.profile (скрипт) знаходиться у вашій домашній директорії. Цей скрипт встановлює "оточення" в якому Вам має працювати. Це різні змінні оточення відповідають за вид системної підказки, шлях пошуку виконуваних файлів, тип терміналу т.п. Наведемо список основних змінних оточення.

    * PATH встановлює шлях пошуку файлів, що виконуються і являє собою набір директорій розділених двокрапкою
    * MAIL визначає ім'я файлу поштової скриньки для повідомлення про прихід нової електронної пошти
    * MAILCHECK параметр показує як часто (в секундах) слід перевіряти поштову скриньку на предмет приходу нової пошти
    * HOME визначає домашній каталог (каталог за замовчуванням). Команда cd без параметрів виконує перехід в цей каталог.
    * PS1 основна системна підказка (по промовчав $)
    * PS2 вторинна системна підказка (за замовчуванням>)
    * SHELL ім'я логін шелла користувача
    * TERM тип терміналу користувача
    * EDITOR ім'я текстового редактора за замовчуванням

    Встановлювати змінні оточення можна по різному. Наприклад команди

    PATH =/bin:/usr/bin:/usr/sbin:/usr/contrib/bin:/usr/local/bin
    і

    PATH =/bin:/usr/bin:/usr/sbin
    PATH = $ PATH::/usr/contrib/bin:/usr/local/bin

    повністю еквівалентні. Для того щоб ці змінні увійшли в системне оточення (крім Шела, стали доступні і інших програм) необхідно виконає команду

    export

    Коментарі.

    Текст наступний за символом # розглядається шолом як коментар і не має жодного впливу на роботу скрипта.

    Основи програмування на мові shell

    Параметри.

    На додаток до стандартних параметрах Шела можна створювати свої параметри, кторые потім можна використовувати в командах. Наприклад

    $ X = test
    $ Echo $ x
    test

    $ Aaa =/
    $ Ls $ aaa

    cdrom home nsmail tcb var
    SD_CDROM dev lib opt tmp
    TT_DB etc lost + found sbin tmp_mnt
    Bin export net stand usr

    При включенні параметрів в рядок або в вираз знак $ повинен передувати параметру. Також необхідно користуватися наступними правилами:

    $ (parameter) значення параметра укладеного в дужки буде використано у виразі. Дужки () використовуються коли за параметром дотримуються букви або цифри не пов'язані з парамаметру. Наприклад, якщо значення параметра xxx одно test то значення виразу $ (xxx) 123 буде дорівнювати test123

    $ (parameter:-word) якщо параметр встановлений і не порожній то результатом виразу буде значення параметра, в іншому випадку в результаті буде використано значення параметра word. Наприклад: $ (xxx: -/usr/bin/sh)
    якщо xxx порожній то результатом виразу буде рядок/usr/bin/sh

    $ (parameter: = word) якщо параметр невстановлені або порожній, тоді значення word буде результатом вираження.
    $ (parameter: + word) якщо параметр встановлений і не порожній, тоді результатом вираження є word, в іншому випадку результат порожній.

    Аргументи командного рядка.

    Коли Ви запускаєте на виконання програми, Ви можете передавати їй один чи більше аргументів. Шелл скрипти мають доступ до цих аргументів за допомогою параметрів $ 0, $ 1, $ 2 ... $ 9. Якщо аргументів більше дев'яти, їх значення поміщаються в буферу і можуть бути доступні з використанням команди shift яка буде обговорюватися нижче. Параметр $ 0 завжди приймає значення імені виконуваного файлу, $ 1 - перший аргумент командного рядка, $ 2 - друга, тощо
    Кількість аргументів командного рядка завжди можна дізнатися проаналізувавши параметр $ #. В разі якщо Вам потрібен один параметр, що містить всі аргументи командного рядка розділені пробілом потрібно воспоьзоваться параметром $ *.
    Для отримання доступу до аргументів з номером більше дев'яти необхідно скористатися командою shift. Після чергового виконання команди shift відбувається зсув на один елемент у буферу параметрів у результаті якого значення параметра $ 2 отримує параметр $ 1, значення параметра $ 3 отримує $ 2, тощо Використовуючи цикл (цикл будуть рассвотрени нижче) у поєднанні з командою shift можна отримувати доступ до всіх аргументів командного рядка з номерами, що перевищують 9.

    Квотінг.

    Дуже часто трапляються ситуації коли необхідна особлива трактування тих символів які шелл сприймає як спец символи. Наприклад випадок коли рядок тексту включаючи пробіли потрібно передати як один аргумент або знак $ повинен не бути сприйнятий як покажчик на параметр. Для цих цілей використовується квотінг (quoting).
    Наприклад символ бекслеша () можна використовувати для квотінга символу $.
    $ Param = aaa
    $ Echo $ param
    aaa

    $ Echo $ param
    $ param

    У поєднанні з бекслешем для квотінга можна використовувати подвійні лапки. Наприклад:

    echo "$ param is a" new directory ""
    aaa is a "new directory"

    При цьому знак $ всередині подвійних лапок інтерпретується як покажчик на параметр а бекслеш використовується для "захисту, в" внутрішніх лапок.

    Одинарні лапки також можна використовувати для квотінга але на відміну від подвійних вони "екранують" все що знаходиться всередині них. Різниця одразу стає зрозумілою після заміни в попередньому прикладі подвійних лапок одніранимі:

    $ Echo '$ param is a "new directory"'
    $ param is a "new directory"

    Підстановка команд.

    Символ зворотного наголосу ( `) використовується в скриптах вказує на підстановку команд. Це має на увазі що результат виводу команди підставляється в шелл як параметр. Нпрімер:

    $ Echo "The current date is` date `"
    The current date is Sat Jan 6 04:16:35 GMT 2001
    або

    $ Users = `who`
    $ Echo "Users currentrly logged in the system: n $ users"
    Users currentrly logged in the system:
    root console Jan 6 03:57
    roman pts/0 Jan 5 23:12

    Умови.

    Дуже часто трапляються ситуації при написанні скриптів коли необхідно виконувати ті чи інші команди в залежності від конкретних умов.
    Наприклад, потрібно відсортувати файл, а в разі його відсутності вивести повідомлення про помилку. На цей випадок шелл має умовний оператор, і зазначена завдання вирішується з його використанням в такий спосіб:

    if test-f $ 1
    then
    sort $ 1
    else
    echo "file $ 1 doesn't exist"
    fi

    Умовний оператор має наступний синтаксис:

    if
    then
    elif
    then
    ... ..
    else
    fi

    Оператор if перевіряє статус виконаної команди (у даному прикладі test-f)
    І в разі успіху (програма повертає 0) виконує команди стоять після then, в іншому випадку виконуються команди else/elif.

    Найбільш часто використовується командою в оператореусловія є команда test. Вона має безліч опцій, повний список яких можна отримати звернувшись до її документації виконавши команду man test.Очень часто замість команди test використовують команду [яка є її фунуціональним аналогом. Тут наводиться лише короткий список основних опцій команди test.

    -r file повертає успіх якщо файл існує і доступний для читання.

    -w file повертає успіх якщо файл існує і доступний для запису.

    -x file повертає успіх якщо файл існує і що виконується.

    -f file повертає успіх якщо це регулярний файл.

    -d file повертає успіх якщо це директорія.

    -c file повертає успіх якщо це спеціальний файл.

    -s file повертає успіх якщо файл має ненульовий розмір.

    -h file повертає успіх якщо це сімлінка.

    -z s1 повертає успіх якщо довжина рядка s1 нульова.

    -n s1 повертає успіх якщо довжина рядка s1 ненульова.

    s1 = s2 перевірка двох рядків на рівність.

    s1! = s2 перевірка двох рядків на нерівність

    s1 повертає успіх якщо рядок s1 непорожній

    n1-eq n2 Алгебраїчна перевірка двох чисел n1 і n2 на
    рівність. Крім-eq є ще ряд опцій для алгебраїчного
    порівняння такі як-ne,-gt,-ge, ...

    Всі перераховані вище умови можуть обьеденяться з використанням логічних операторів:

    ! заперечення

    -a Бінарний І

    -o Юінарний АБО (-а має пріоритет більший ніж-о)

    (Expr) Угрупування виразів дужками

    Введення даних.

    Для введення іданних в скрипт можна скористатися командою

    read [parameter ...]

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

    Примітка: знак $ перед іменем параметра в команді read ставити не потрібно.

    Цикли.

    Дуже часто при складанні скриптів простого послідовного виконання буває недостатньо. Необхідні механізми, які дозволяли б виконувати команди з змінними параметрами. Для цих цілей шелл надає в розпорядження три ціклічекіе конструкції: цикли for, while та untill.

    Цикл for

    Цей тип циклів дозволяє виконувати один і той же набір команд кожного разу з новими значеннями отриманими зі списку параметрів. Він має такий вигляд:

    for parameter [in wordlist]
    do command-list
    done

    де parameter це будь-яке ім'я параметра, wordlist - одна або кілька значень послідовно привласнюються параметру, command-list - набір команд які виконуються при кожному проході циклу. wordlist може бути або просто набором аргументів розділених пробілом, або командою шелла яка генерує сама аргументи. Наприклад наступний код:

    for i in 1 2 3 4 5
    do
    if mkdir $ i
    then
    echo "directory $ i was created"
    fi
    done

    створює послідовно директорії з іменами 1 2 3 4 5 і в разі успішного створення директорії видає повідомлення. Наступний скрипт:

    for i in `ls a *`
    do
    cp $ i/tmp
    echo "$ i was copied"
    done

    копіює всі файли що починаються на літеру a з поточного каталогу в каталог/tmp.

    Цикл while

    while command-list1
    do command-list2
    done

    цей цикл запускає команди зі списку command-list1, і якщо остання команда зі списку виконали успішно (код повернення дорівнює 0) то починають виконуватися команди зі списку command-list2, у противному випадку цикл закінчується. Цикл з такого прикладу:

    while [-r $ 1]
    do
    echo "processing $ 1"
    cat $ 1>> summary
    shift
    done

    по черзі зчитує аргументи командного рядка, у разі коли в поточному каталозі присутній файл доступний на читання з ім'ям збігається з цим аргументом, вміст цього файлу дописується до файлу з ім'ям summary. В іншому випадку, скрипт припиняє свою роботу.

    Цикл util

    until command-list1
    do command-list2
    done

    конструкція цього циклу повністю аналогічна циклу while за винятком того що тіло циклу (набір команд command-list2) виконується як мінімум один раз не залежно від успішності виконання умови циклу (набір команд command-list1).

    Оператор case

    Оператор case є розширенням стандартного умовного оператора if. Якщо є умова при якому може реалізовуватися безліч варіантів то замість серії операторів if краще використовувати один case.

    case parameter in
    pattern1 [| pattern2 ...]) command-list1;;
    pattern2 [| pattern3 ...]) command-list2;;
    ...
    esac

    шаблони pattern визначають варіанти параметра parameter. При збігу параметру з одним із шаблонів буде виконано відповідний список команд command-list. У квадратних дужках ([| pattern2 ...]) зазначені додаткові варіанти розділені символом (|) які може приймати parameter крім основного. Закінчується список шаблонів дужкою. Більш зрозумілою структура цього оператора стане після розгляду прикладу:

    case $ i in
    -d |-c) mkdir dir1
    echo "directory dir1 was created";;
    -r) rmdir dir1
    echo "directory dir1 was removed";;
    *) Echo "invalid option";;
    esac

    У цьому прикладі скрипт отримавши при запуску один з аргументів-d чи-c спробує створити директорію з ім'ям dir1, отримавши аргумент-r спробує її стерти. У всіх інших випадках (шаблон *) він видасть попередження про неправильний аргумент.

    Примітка: Зверніть увагу на те що порядок проходження гшаблонов в операторі case має велике значення. Так якщо рядок

    *) Echo "invalid option";;

    поставити в самий початок, то на ній буде весь час термініроваться скрипт.

    Команда. (точка)

    Кожного разу коли Ви запускаєте шелл програми, створюється ще одна копія шелла в якій вони виконуються. Тому якщо Ви написали шелл скрипт, то всі змінні "живуть" тільки під час виконання скрипта. Якщо ви хочете, щоб всі змінні з шелл програми були у вашому поточному оточенні запускати скрипт потрібно в поточному Шелі, це досягається використанням команди. (точка).

    . scriptname

    Команда eval
    eval [arg ...]< br />
    Аргументи читаються і з'єднуються в одну команду. Потім ця команда виконується Шеллі і статус виходу команди повертається як результат команди eval. Якщо аргументи в команді відсутні або порожні то команда повертає нульовий статус.
    Як приклад розглянемо два скрипта:

    d = 'date &'; $ d
    і
    d = 'eval date &'; $ d

    перший з них не виконається так як команда date сприйме символ & як аргумент а не як ознака запуску у фоновому режимі, в результаті чого перші скрипт не виконається на відміну від другого.

    Використання метасимволів.

    У всіх конструкціях циклів і операторі case можливе використання метасимволів. Наприклад скрипт з прикладу оператора циклу for

    for i in `ls a *`
    do
    cp $ i/tmp
    echo "$ i was copied"
    done

    можна переписати в більш простому вигляді

    for i in a *
    do
    cp $ i/tmp
    echo "$ i was copied"
    done

    результат буде один і той же.

    2.3.1 Деякі спеціальні команди

    Роздільники & & та | |

    Це умовні роздільники. При розподілі двох команд за допомогою & & друга команда виконається лише в тому випадку коли перший завершиться успішно. При поділі команд за допомогою | | друге виконається лише тоді коли перша закінчилася неуспішне (код повернення не дорівнює нулю).
    Наприклад при виконанні скрипта:

    test-d/usr/tools & & cd/usr/tools
    test-d/usr/tools | | echo "directory doesn't exist"

    вхід в директорію/usr/tools буде вироблений тільки при її наявності, в іншому випадку буде видане повідомлення про її відсутність.

    Визначення функцій

    Для скорочення обсягу шелл програм і спрощення їх розуміння і сопровжденія шелл допускає введення і використання функцій. Для опреденія функції використовується наступний синтаксис:

    name () (list;)

    де name - це ім'я функції, а list - список команд з яких складається тіло функції. Нижче наведено приклад функції повертає 0 якщо аргумент переданий їй є каталогом і 1 в іншому випадку.

    dir_test () (
    if [-d $ 1]
    then
    echo "$ 1 is a directory"
    return 0
    else
    echo "$ 1 is not directory"
    return 1
    fi;
    )

    виклик функції здійснюється в такий спосіб

    name [parameter ...]

    наприклад в нашому випадку це можна зробити так

    dir_test/usr/bin/sh

    Перенаправлення вводу-виводу

    Як було сказано вище для перенаправлення вводу-виводу використовуються символи (> перенаправлення виводу,>> перенаправлення виведення з додаванням у файл і <перенаправлення вводу). Крім цього існує ще ряд конструкцій, один з яких:>



    при цьому всі лінії від першої і до містить рядок word будуть використовуватися як вхідні дані. Наприклад:

    $ Cat These words will be printed
    > The cat command until the "mark"
    > Word is found
    > Mark
    These words will be printed
    the cat command until the "mark"
    word is found
    $

    Якщо перед рядком word стоїть мінус то всі символи табуляції на початку рядків будуть вирізані.

    Інший часто використовується конструкцією при перенаправлення вводу-виводу є:


    > & Цифра

    При цьому задіюється файловий дискриптор асоційованим з вказаної цифрою. У більшості програм із стандартним вводом пов'язаний дискриптор 0, із стандартним виводом дискриптор 1, і зі стандартним потоком помилок дискриптор 2. Всі програми які працюють один з одним через пайпи за замовчуванням пользуються дискриптора 0 і 1. Найбільш часто використовувані перенаправлення це 1> & 2 і 2> & 1. Наведемо приклад з якого стане зрозумілий зміст цих конструкцій:

    $ Ls/no/such/file> out
    / no/such/file not found
    $ Cat out
    $
    $ Ls/no/such/file> out 2> & 1
    $ Cat out
    / no/such/file not found
    $

    перша команда намагається вивести лістинг НЕ суцествующего файлу перенаправивши стандартний вивід в файл out. Файл out при цьому оказивется порожнім тому повідомлення про помилку виводиться у стандартний потік помилок і з'являється на терміналі. Друга команда об'єднує стандартний потік помилок зі стандартним висновком який перенаправлений в файл out. При цьому повідомлення про помилку потрапляють у файл, про що свідчить команда cat.

    Команда exec
    exec [arg ...]

    Ця команда виконує заміщення поточного Шела новим шолом або програмою. Різниця між простим запуском Шелаєв та запуском через exec стає очевидною на наступному прикладі:

    $ Ksh
    $ Ps
    PID TTY TIME COMMAND
    2125 pts/0 0:00 ksh
    2094 pts/0 0:00 sh
    2126 pts/0 0:00 ps
    $

    $ Exec ksh
    $ Ps
    PID TTY TIME COMMAND
    2127 pts/0 0:00 ps
    2094 pts/0 0:00 ksh
    $

    Команда expr
    expr expression (+, -, *, /, *, =,>,> =,). Перенаправлення можливо лише з використанням операції>!
    $ notify Якщо змінна встановлена то посилати немендленние повідомлення після закінчення фонових процесів
    $ path Шлях для пошуку виконуваних файлів. При зміні цієї змінної потрібно повідомити шелл виконавши команду rehash
    $ prompt Вид системної підказки
    $ status Код повернення самої останньої команди


    Цифрові змінні csh

    Команда at (@) призначає цифровий змінної арифметичне значення, так само як і команда set призначає значення стороковой змінної. Значним цифрових змінних є десяткові цілі.

    % @ Sum = (1 + 2)
    % Echo $ sum
    3

    Основні арифметичні операції в csh

    Операція Опис
    () Дужки змінюють порядок виконання операцій
    + Додавання
    - Віднімання
    * Множення
    / Ділення
    % Ділення

    Основні логічні операції в csh

    Операція Опис
    == Перевірка на рівність
    ! = Пооверка на нерівність
    ! Логічне заперечення

    Крім цих операцій є ще ряд логічних операцій які повинні бути взяті в дужки і їх операнди повинні ьить розділені пробілами у вигляді (operand1> = operand2)

    Операція Опис
    > Більше
    <Менше>
    > = Більше або дорівнює

    >> Правий бітовий зсув

    & Бітів і
    | Бітів або
    & & Логічне І
    | | Логічне АБО

    Наприклад:

    % @ R = (2
    % Echo $ r
    32

    Основні операції привласнення в csh

    Операція Опис
    = Просте рісвоеніе а = b
    + = A = a + b
    -= A = a - b
    *= A = a * b
    / = A = a/b
    % = A = a% b

    Постфіксние операції

    До останніх відносяться операції + + і -

    % @ A = 10
    % @ A + +
    % Echo $ a
    11

    Основні файлові операції

    Виражений в csh можуть повертати значення в залежності від наявності або відсутності файлу, прав доступу до нього, тощо Для цього використовується наступний синтаксис:

    -file_test filename

    де file_test і filename можуть приймати наступні значення
    file_test опис
    d Чи є файл директорією?
    e Чи існує файл?
    f Це звичайний файл?
    o Чи є я його власником?
    r Мають
         
     
         
    Реферат Банк
     
    Рефераты
     
    Бесплатные рефераты
     

     

     

     

     

     

     

     
     
     
      Все права защищены. Reff.net.ua - українські реферати ! DMCA.com Protection Status