Міністерство освіти і науки україни
НАЦІОНАЛЬНИЙ УНІВЕРСИТЕТ “ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Робота з командною оболонкою BASH
МЕТОДИЧНІ ВКАЗІВКИ
до лабораторної роботи № 2
з курсу «Операційні системи»
Львів 2015
Тема : Робота з командною оболонкою BASH
Мета : Оволодіти практичними навичками роботи та адміністрування в системі LINUX за допомогою командної оболонки BASH. Ознайомитись із оболонкою BASH, виконанням команд у BASH, змінними оболонки, синтаксисом BASH-сценаріїв.
Порядок виконання роботи
По номеру варіанта вибрати завдання і відповідно до методичних вказівок, за матеріалами рекомендованої літератури і конспекту лекцій виконати завдання і оформити звіт по роботі.
Зміст звіту
Початкові дані і постановка задачі.
Текст програми.
Результати виконання програми
Висновки.
Методичні вказівки
Оболонка bash
Bash – це абревіатура від Bourne Again Shell. Це англомовна гра слів: bash побудована на основі оболонки Борна (bourne), яка, разом з оболонками Korn і С, вважається однією з класичних оболонок UNIX.
Так що ж таке оболонка? Оболонка в першу чергу призначена для виклику команд і програм в ОС Linux. Таким чином, вона є свого роду інтерпретатором. Оболонка виконується в будь-якому командному вікні, наприклад konsole, gnome-terminal, xterm, і в текстовій консолі після входу в систему (логування).
У той же час оболонка є потужною мовою програмування, за допомогою якої можна автоматизувати робочі процеси. Особливі команди оболонки дозволяють використовувати в рамках цієї програми змінні, створювати запити і цикли і т. д. Отримані в результаті проектування програми, залежно від уподобань автора, називаються командними файлами, пакетними файлами, сценаріями, процедурами оболонки і т. д. Незалежно від назви , мова в даному випадку йде про прості текстові файли, які виконуються (інтерпретуються) оболонкою.
Виконання команд
Зазвичай для запуску команди необхідно ввести її ім'я. У командному рядку можна вказати скільки завгодно спеціальних символів, які будуть інтерпретовані bash ще до запуску команди. Таким самим чином можна запускати команди у фоновому режимі, охоплювати за допомогою групових символів (джокерів) одночасно багато подібних імен файлів (наприклад * .tex), підставляти результати виконання однієї команди в список параметрів іншої команди і т. д.
Фонові процеси
Одним з найважливіших спеціальних символів є символ &. Якщо вказати його в кінці командного рядка, bash запустить програму у фоновому режимі. Це має сенс у першу чергу тоді, коли виконання команди займає багато часу, щоб можна було продовжувати роботу, не чекаючи закінчення виконання такої програми.
User$ find / -name '*sh' > result &
[1] 3345
Вищевказана команда шукає по всій файловій системі файли, назви яких закінчуються на sh. Список знайдених файлів записується у файлі result. Оскільки команда виконується у фоновому режимі, роботу можна не переривати. Результат [1] 3345 означає, що фоновий процес має номер PID 3345. Тут PID означає ідентифікатор процесу (process ID). Номер PID цікавий у тому випадку, коли процес був аварійно завершений командою kill. Номер в квадратних дужках це номер фонового процесу, запущеного в bash. Як правило, цей номер не важливий.
Виконання декількох команд
Після символу & ви також можете вказати наступну команду. У такому випадку перша команда буде виконуватися у фоновому режимі, а друга в явному. У наступному прикладі розглянута вище команда find знову запускається у фоновому режимі. Однак ls одночасно виводить зміст поточного каталогу:
user $ find / -name '* sh'> result & ls
Якщо замість символу & поставити крапку з комою, то bash по черзі виконає команди у фоновому режимі: ls; date
Ця команда спочатку відображає зміст поточного каталогу, а потім виводить поточний файл. Якщо необхідно перенаправити всю цю інформацію у файл за допомогою >, то обидві команди ставляться в круглих дужках. У такому випадку вони виконуються однією і тією ж оболонкою.
user $ (ls; date) > content
У файлі content тепер знаходиться список файлів, створений ls, а також поточна дата, з'ясована date. Завдяки круглим дужкам обидві команди виконуються однією і тією ж оболонкою і видають загальний результат (як правило, ситуація інша при запуску кожної нової команди активується нова оболонка).
Використовуючи поєднання символів && і ||, можна виконувати команди відносно, тобто залежно від результату іншої команди. Наприклад
user $ команда1 && команда2
виконує команду1 тільки у випадку, якщо ця команда була виконана успішно (без помилки, без видачі 0 в якості значення, що повертається)
Команда |
Функція |
Команда1 ; команда2 |
Виконує команди одна за одною |
Команда1 && команда2 |
Виконує команду2, якщо команда1 була виконана успішно |
Команда1 || команда2 |
Виконує команду2, якщо команда1 повертає помилку |
Команда & |
Запускає команду в фоновому режимі |
Команда1 & команда2 |
Запускає команду1 в фоновому режимі, команду2 — в явному |
(Команда1 ; команда2) |
Виконує дві команди в одній і тій же оболонці |
Інші можливості для створення умов і розгалужень для команд пов'язані з використанням команди if.