Основи BASH

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

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

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

Рік:
2010
Тип роботи:
Звіт до лабораторної роботи
Предмет:
Інші
Група:
ІБ – 44

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

Міністерство освіти і науки України Національний університет Львівська політехніка  Звіт до лабораторної роботи № 4 на тему: “Основи BASH” Мета роботи познайомитися з призначенням та основними можливостями оболонки bash; познайомитися з основними правилами написання скріптів оболонки bash; познайомитися з середовищем оболонки bash та правилами розкривання команд оболонки. Виконання роботи Bash (від англ. Bourne again shell, букв. перероджена Shell) — вдосконалена і модернізована варіація командної оболонки Bourne shell. Один з найпопулярніших сучасних різновидів командної оболонки UNIX. Особливо популярна в середовищі GNU/Linux, де воно часто використовується як командна оболонка за замовчуванням. Bash це акронім Bourne-again-shell, тобто знов оболонка Bourne. Назва це гра слів на Bourne-shell — один з популярних різновидів командної оболонки для UNIX (sh), автором якої є Stephen Bourne (1978), вдосконалена в 1987 Brian Fox. Bourne (Бурн) перекликається з англійським словом «born», що означає що «народився», звідси: народжена-знов командна оболонка. Синтаксис команд bash — це надмножина синтаксису команд Bourne shell. Остаточна специфікація синтаксису команд Bash є в Bash Reference Manual, що поширює проект GNU. "hello world" #!/bin/bash echo Hello World! Даний скрипт містить тільки два рядки. Перший повідомляє системі про те, яка програма використовується для запуску файлу. Другий рядок — це єдина дія, що виконується даним скриптом, він власне друкує 'Hello world' на терміналі. Умовний оператор #!/bin/bash T1="foo" T2="bar" if [ "$T1" = "$T2" ]; then echo умова виконується else echo умова не виконується fi Цикли #!/bin/bash for i in $( ls ); do echo item: $i done #!/bin/bash for i in `seq 1 10`; do echo $i done #!/bin/bash COUNTER=0 while [ $COUNTER -lt 10 ]; do echo The counter is $COUNTER let COUNTER=COUNTER+1 done Відмінний синтаксис Переважна більшість важливих скриптів командного процесора Bourne можуть виконуватися без зміни в bash, за винятком тих скриптів Bourne, які посилаються на спеціальні змінні Bourne або використовують вбудовані команди Bourne. Синтаксис команд Bash включає ідеї, позичені в Korn shell (ksh) і C shell (csh), такі як редагування командного рядка, історія команд, стек директорії, змінні $RANDOM і $PPID, і синтаксис заміни команди POSIX : $(...) . Коли Bash використовується як інтерактивний командний процесор, він підтримує автозавершення імен програм, імен файлів, імен змінних тощо, якщо користувач натискає кнопку TAB. Цілочисельна математика Головне обмеження Bourne shell це те, що він не може виконувати обчислення з цілими числами без породження зовнішнього процесу . Bash може виконувати цілочисельні обчислення усередині процесу використовуючи команду ((...)) і синтаксис змінної $[...], як показано нижче: VAR=55 # Встановлюємо змінну VAR, рівною 55 ((VAR = VAR + 1)) # Додаємо одиницю до змінної VAR. Зверніть увагу на відсутність знаку '$' ((++VAR)) # Інший спосіб збільшення VAR на одиницю. Виконує префіксний інкремент ((VAR++)) # Інший спосіб збільшення VAR на одиницю. Виконує постфіксний інкремент echo $[VAR * 22] # Множимо VAR на 22 і передаємо результат команді echo $((VAR * 22)) # Інший спосіб зробити те ж Команда ((...)) так само може використовуватися в умовних твердженнях, тому що її вихідний параметр це 0 або 1, які можуть інтерпретуватися як true або false: if ((VAR == Y * 3 + X * 2)) then echo Yes fi ((Z > 23)) && echo Yes Команда ((...)) підтримує такі відносні оператори: '==' '!=', '>', '<', '>=', і '<='. Bash не підтримує обчислення всередені процесу з числами з плаваючою крапкою. Тільки командні процесори Unix підтримують цю можливість Korn Shell (версія 1993 року ) і zsh (починаючи з версії 4.0). Перенаправлення I/O Bash має індивідуальний синтаксис перенаправлення, який не підтримує Bourne shell. Bash може перенаправляти стандартний вивід і стандартні помилки одночасно, використовуючи наступний синтаксис : command &> file що простіше набрати, ніж еквівалентну команду в синтаксисі Bourne shell command > file 2>&1 Bash, починаючи з версії 2.05b, може перенаправляти стандартний ввод з рядка використовуючи наступний синтаксис (іноді званий "here strings"): command <<< "string to be read as standard input" Якщо рядок містить пробіли, він має бути поміщений в лапки. Приклад: Перенаправлення стандартного виводу у файл, запис даних, закриття файлу, скидання STDOUT # make Filedescriptor(FD) 6 a copy of stdout (FD 1) exec 6>&1 # open file "test.data" for writing exec 1>test.data # produce some content echo "data:data:data" # close file "test.data" exec 1>&- # make stdout a copy of FD 6 (reset stdout) exec 1>&6 # close FD6 exec 6>&- Відкриття і закриття файлів: # open file test.data for reading exec 6<test.data # read until end of file while read -u 6 dta do echo "$dta" done # close file test.data exec 6<&- Захоплення виведення зовнішніх команд: # execute 'find' and store results in VAR # search for filenames which end with the letter "h" VAR=$(find . -name "*h") Регулярні вирази всередині процесу Bash 3.0 підтримує всередині процессниє регулярні вирази, з використанням наступного синтаксису, що нагадує Perl: string =~ regex Синтаксис регулярних виразів такий же, що і задокументований на сторінках документації regex. Статус виходу вищезазначеної команди 0 якщо перерахування regex це рядок, 1 якщо це не так. До введених підвиразів в регулярному виразі можна дістати доступ, використовуючи змінну командного процесора BASH_REMATCH, як показано нижче: if abcfoobarbletch =~ 'foo(bar)bl(.*)' then echo The regex matches! echo $BASH_REMATCH -- outputs: foobarbletch echo ${BASH_REMATCH[1]} -- outputs: bar echo ${BASH_REMATCH[2]} -- outputs: etch fi Цей синтаксис діє швидше, ніж виконаня команди grep, бо відповідний регулярний вираз міститься в межах процесу Bash. Якщо регулярний вираз або рядок містять пропуски або метасимволи (такі як '*' or '?'), вони повинні бути поміщені в лапки. Розширення дужок Можливість розширення дужок позичена в csh, вона дозволяє довільному ряку бути сформованим з використанням схожої техніки, як це робиться з назвами файлів. Проте в bash згенеровані рядки не зобов'язані бути іменами файлів. Результат кожного розширення рядка не сортується, зберігається порядок зліва направо: # This is a bash specific feature echo a{p,c,d,b}e # ape ace ade abe Не треба використовувати цю особливість, якщо скрипт планується портувати, бо в традиційних скриптах розширення рядка не діятиме: # A traditional shell does not produce the same output echo a{p,c,d,b}e # a{p,c,d,b}e Переносимість Скрипти оболонок, написані зі специфічними для bash особливостями (bashism-и) не ьудуть відпрацьовувати на системах,де використовується Bourne shell або один з його замінників, без того, щоб bash був встановлений як додаткова оболонка, і звісно, скрипти треба починати з #!/bin/bash. Ця проблема стала особливо важливою, коли Ubuntu почав з жовтня 2006, поставляти Debian Almquist shell, dash, як скриптову оболонку за умовчанням, що призвело до числених недієздатних скриптів. Висновок: в даній лабораторній роботі я вивчив основні команди BASH. Також ознайомився з базовими методами написання скріптів за допомогою даного середовища розробки скріптів для UNIX ОС. BASH це дуже потужне середовище для написання скріптів, тому що, по-перше, BASH на даний момент спортований на ряд провідних ОС. По-друге, один раз написаний скріпт можна використовувати повторно, що в свою чергу зменшує час який має затратити адміністратор/користувач терміналу для виконання поставлених завдань.
Антиботан аватар за замовчуванням

22.02.2012 22:02-

Коментарі

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

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

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

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

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

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

Admin

26.02.2023 12:38

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