МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ
Національний університет
“ЛЬВІВСЬКА ПОЛІТЕХНІКА”
Основи Bash
ЛАБОРАТОРНА РОБОТА № 4
З ДИСЦИПЛІНИ “МЕРЕЖЕВІ ОПЕРАЦІЙНІ СИСТЕМИ”
Мета роботи
познайомитися з призначенням та основними можливостями оболонки bash;
познайомитися з основними правилами написання сценарiїв оболонки bash;
познайомитися з середовищем оболонки bash та правилами розкривання команд оболонки.
Короткі теоретичні відомості
Подібно до того, як люди знають декілька мов та діалектів, UNIX надає на ваш вибір
декілька різних оболонок:
• sh, чи оболонка Борна (Bourne Shell): перша оболонка, яка була використана у UNIX-
подібних середовищах. Це базова оболонка, маленька та з невеликим набором
можливостей. Та й хоча вона не є стандартною оболонкою, вона присутня на кожній
системі з встановленим Linux. Це зроблено для того, щоб забезпечити сумісність з
програмами UNIX.
• bash, чи нова оболонка Борна (Bourne Again Shell): стандартна оболонка GNU,
інтуїтивна та розвинена. Вона підійде як новачкам, так і професіоналам. У більшості
користувачів Linux стандартною оболонкою встановлено саме bash. У деякому сенсі
bash — це надбудова над sh, набір доповнень та додаткових модулів. Таким чином,
нова оболонка Борна сумісна зі звичайною оболонкою Борна: команди, що працюють
у sh, будуть працювати і у bash. Тим не менш, зворотне твердження не завжди є
вірним. Усі приклади в цій книзі використовують bash.
У файлі /etc/shells знаходиться інформація про оболонки, присутні у системі:
mia:~> cat /etc/shells
/bin/bash
/bin/sh
/bin/tcsh
/bin/csh
Стандартна оболонка встановлюється у файлі /etc/passwd. Наприклад, рядок користувача
mia:
mia:L2NOfqdlPrHwE:504:504:Mia Maya:/home/mia:/bin/bash
Сценарій оболонки — це послідовність команд, розрахована для багаторазового вжитку.
Зазвичай для виконання цієї послідовності назву сценарію вводять у командному рядку.
Сценарії також можна застосувати для автоматизації задач, використовуючи можливості
інструменту cron. Ще один приклад — завантаження та зупинка систем UNIX, під час яких у
спеціальних сценаріях визначаються набори демонів та служб, які потрібно запустити або
вимкнути.
Загальносистемні файли ініціалізації
/etc/profile
Якщо оболонка запущена з опцією —login чи як sh, ‘‘bash’’ зчитує інструкції з файлу
/etc/profile. Як правило в цей час установлюються змінні PATH, USER, MAIL, HOSTNAME
та HISTSIZE. В деяких системах в цьому ж файлі задається значення umask; в інших тут
знаходяться вказівники на інші файли, як от
• /etc/inputrc, загальносистемний файл ініціалізації, в якому ви можете задати стиль
дзвінка командного рядка.
• каталог /etc/profile.d, що містить файли, які задають загальносистемну поведінку
певних програм.
Цей файл конфігурації встановлює деякі основні змінні середовища оболонки, а також
змінні, що необхідні для запуску Java та/чи Java програм у веб-броузері. За докладнішою
інформацією зверніться до параграфу 3.2.
Особисті користувацькі файли налаштувань
~/.bash_profile
Цей файл має більшу вагу, аніж загальносистемний. В ньому користувач може задавати
додаткові налаштування середовища, чи перепризначити системні.
~/.bash_login
Цей файл містить специфічні команди, які зазвичай виконуються тільки після реєстрації в
системі. Наприклад, ми використаємо його, щоб задати значення umask та щоб відтворити
список користувачів, що працюють в системі в момент нашої реєстрації. Також користувач
отримує календар на поточний місяць.
~/.bashrc
Сьогодні доволі часто застосовується запуск оболонки без реєстрації, наприклад, якщо ви
реєструвались у системі засобами Х. В цьому випадку, запускаючи оболонку, користувач не
повинен вводити свого імені та паролю; реєстрації не відбувається. В такому випадку ‘‘bash’’
шукає файл ~/.bashrc, то ж в ньому знаходяться посилання на файли, що аналізуються під час
реєстрації, щоб вам не доводилось вводити одні і ті ж команди двічі.
Символи екранування
Символи екранування (escape characters) використовуються для того, щоб відмінити
особливе значення одиночних символів. Зворотна похила риска, не взята у лапки,
використовується як спеціальний символ у bash. Вона зберігає буквальне значення
наступного символу за винятком символу нового рядка. Якщо після зворотної похилої риски
йде символ нового рядка, то він позначає продовження рядка, якщо той довший за ширину
терміналу; сама зворотна похила риска видаляється з вхідного потоку та ігнорується.
franky ~> date=20021226
franky ~> echo $date
20021226
franky ~> echo \$date
$date
В цьому прикладі новоствореній змінній date присвоюється певне значення. Перша команда
echo відображає значення змінної, але в другому випадку символ долара зберігається.
Одинарні лапки використовується щоб зберегти літеральне значення кожного символу, що
знаходиться між ними. Одинарні лапки не можуть знаходитись між іншими одинарними
лапками, хіба лише після символу зворотної похилої риски. Продовжуючи попередній
приклад: franky ~> echo '$date'
$date
Використання подвійних лапок зберігає літеральні значення символів, що знаходяться між
ними за винятком символів долара, зворотних одинарних лапок та зворотної похилої риски.
Символ долара та зворотні одинарні лапки мають спеціальне значення всередині подвійних
лапок. Символ зворотної дробової зберігає своє значення лише після символів долара, зворотних
лапок, подвійних лапок, ще однієї зворотної похилої чи символу нового рядка. Всередині
подвійних лапок зворотна коса видаляється з вхідного потоку, коли вона слідує за одним з цих символів. Символи, що передують зворотнім похилим та не мають спеціального
значення залишаються незміненими для подальшої обробки інтерпретатором.
Подвійні лапки можуть бути вжиті всередині подвійних лапок якщо перед ними буде символ
зворотної похилої риски.
franky ~> echo "$date"
20021226
franky ~> echo "`date`"
Sun Apr 20 11:22:06 CEST 2003
Завдання
Варіант №18
У форматі команди "ls -l" виводить інформацію про всі файли заданого каталогу D, в яких присутній дозвіл на читання.
Результати виконання завдання
ubuntu@ubuntu:~$ ls -l lab4
total 24
---------- 1 ubuntu ubuntu 111 2010-05-11 08:12 123
---------- 1 ubuntu ubuntu 111 2010-05-11 09:35 1234mod
--w--w---- 1 ubuntu ubuntu 111 2010-05-11 09:35 123copy
-rw-r--r-- 1 ubuntu ubuntu 2 2010-05-11 08:12 aaa
-rw-r--r-- 1 ubuntu ubuntu 108 2010-05-11 08:11 lab4
-rw-r--r-- 1 ubuntu ubuntu 2 2010-05-11 08:07 lab4~
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ chmod u+x lab4script.sh
ubuntu@ubuntu:~$ ls -l lab4script.sh
-rwxrw-r-- 1 ubuntu ubuntu 456 2010-05-11 08:11 la4script.sh
ubuntu@ubuntu:~$
ubuntu@ubuntu:~$ ./lab4script.sh
Scenariu do varianta 18
Zaxodumo v zadany durektorijy
Vuvodumo na ekran ysi faulu danoi durektorii, v jakux prusytniu dozvil Read
-rw-r--r-- 1 ubuntu ubuntu 2 2010-05-11 08:12 aaa
-rw-r--r-- 1 ubuntu ubuntu 108 2010-05-11 08:11 lab4
-rw-r--r-- 1 ubuntu ubuntu 2 2010-05-11 08:07 lab4~
Os' nashi failu
ubuntu@ubuntu:~$
lab4script.sh
#! /bin/bash
clear
echo "Scenariu do varianta 18"
echo "Zaxodumo v zadany durektorijy"
cd lab4
echo "Vuvodumo na ekran ysi faulu danoi durektorii, v jakux prusytniu dozvil Read"
ls -l | awk '/-r/ {print}'
echo "Os' nashi failu"
Висновок
На даній лабораторній роботі я ознайомився з призначенням та основними можливостями оболонки bash; з основними правилами написання сценарiїв оболонки bash.