10 простих команд для написання перших Bash-скриптів
Одна з основних можливостей ОС Linux — це вбудована потужна підтримка скриптових мов. Bash є однією з найпопулярніших командних оболонок, яку використовують для автоматизації рутинних завдань в операційній системі Unix/Linux.
У цьому тексті розберемо основи Bash-скриптингу, поділимось основними командами Bash для початківців та створимо простий скрипт.
Що таке Bash
Bash (Bourne again shell) — це інтерпретатор командного рядка, стандартна командна оболонка у більшості дистрибутивів Linux і macOS. Bash був створений у 1989 році Брайаном Фоксом для того, щоб вдосконалити командну оболонку sh. Це ідеальний вибір для швидкого написання скриптів через його простий синтаксис та поширеність в Unix-подібних ОС.
Оболонка — це програмне забезпечення, що дозволяє користувачу спілкуватися з комп’ютером, керувати системою, отримувати інформацію про неї або про системні файли. Така взаємодія може відбуватися двома шляхами: за допомогою набраних у терміналі команд (інтерфейс командного рядка) або шляхом виконання заздалегідь підготовлених файлів сценаріїв — скриптів.
Скрипти Bash можуть спростити роботу системного адміністратора та автоматизувати багато завдань, які виконуються у командному рядку вручну, наприклад встановити програмне забезпечення, налаштувати робоче середовище тощо.
Bash має такі переваги:
- зберігання команд у текстовому форматі;
- можливість виконання повторюваних та умовних операцій;
- можливість вказати послідовність виконання команд;
- сумісність із більшістю Unix-подібних систем.
Для взаємодії з оболонкою використовують термінал. Це командо-орієнтований інструмент, тому що для роботи з ним треба безпосередньо вводити команди, а не заповнювати поля чи вибирати дію кнопками миші.
Після відкриття термінала ти побачиш наступне:
username@localhost:~$
де username — ім’я користувача, localhost — назва системи (Debian, Ubuntu тощо), ~ (тільда) — домашній каталог (/home/username), а $ — обліковий запис звичайного користувача.
Команди bash
Команди — це найменша виконувана одиниця коду в Bash. За допомогою команд ти можеш повідомити оболонці, що необхідно зробити у системі. Зазвичай Bash приймає від користувача одну команду та повертається вже після того, як вона буде виконана.
Спробуй виконати декілька простих команд у Debian.
echo — повертає все, що вводиться у командний рядок.
username@localhost:~$ echo ‘hello world’
date — показує поточну дату та час.
username@localhost:~$ date
pwd (print working directory) — вказує на поточний робочий каталог, де оболонка буде шукати файли.
username@localhost:~$ pwd
ls (list) — відображає вміст каталогу. Зазвичай команда ls починає з перегляду домашнього каталогу. Це означає, що якщо ти просто введеш ls, то отримаєш у результаті вміст поточного каталогу — /home/username:
username@localhost:~$ ls
cd (скор. від «change directory») — змінює поточну директорію на задану користувачем. Розглянемо декілька прикладів використання цієї команди:
cd (change directory) — змінює поточний каталог на заданий користувачем. Має декілька опцій:
- cd <каталог> — змінює поточний каталог на заданий, наприклад, на / — кореневий каталог:
username@localhost:~$ cd /
- cd .. — повернутися в батьківський каталог:
username@localhost:~$ cd ..
- cd — повернутися в домашній каталог:
username@localhost:~$ cd
mkdir (make directory) — створює новий каталог:
username@localhost:~$ mkdir
mv (move) — переміщує один або кілька файлів/каталогів з одного місця до іншого, яке задане користувачем. Для цього потрібно вказати, що ти хочеш перемістити і куди. Для прикладу, перенесемо всі файли з розширенням .txt з каталогу directory_1 у directory_2.
username@localhost:~$ mv /home/username/directory_1/*.txt ./directory_2/
rm (remove) — видаляє файли. Зазвичай команда rm не видаляє каталоги, але вона може використовуватися як rm -r * всередині вказаного каталогу, тоді кожний підкаталог та файл всередині заданого каталогу будуть видалені.
username@localhost:~$ rm filename.txt
rmdir (remove directory) — видаляє каталоги.
username@localhost:~$ rmdir directory_name/
cat (concatenate) — зчитує файл та виводить його вміст. Команда може працювати з декількома файлами, об’єднуючи їхні результати в єдиний потік.
username@localhost:~$ cat filename.py
Щоб переглянути декілька файлів, вкажи через пробіл їхні назви після команди cat, наприклад:
username@localhost:~$ cat filename1.py filename2.py
man (manual) — відображає стандартний посібник користувача, що вбудований у деякі дистрибутиви Linux та більшість Unix-систем. Наприклад, команда man bash відобразить посібник користувача, а команда man ls відобразить довідку по команді ls.
username@localhost:~$ man bash
Написання bash-скриптів
Будь-який скрипт у Bash є звичайним текстовим файлом з переліком команд для циклів та запитів. Під час виконання файлу як програми команди обробляються по черзі.
Все, що ти можеш запустити з командного рядка, може бути додано у скрипт, як і навпаки: команди зі скрипту можна скопіювати у командний рядок і виконати.
Bash Скрипти мають розширення .sh. Тому, щоб створити новий bash-скрипт, відкрий текстовий файл у будь-якому редакторі та збережи його з розширенням .sh. Проте у Linux не обов’язково мати якесь розширення, скрипт може бути виконаний і без цього.
Кожен bash-скрипт завжди повинен починатися з шебанга:
#!/bin/bash
Після #! ти маєш вказати шлях до командної оболонки bash. Якщо у тебе bash знаходиться в іншому місці, то можеш використати команду whereis bash, дізнатися його локацію і вказати шлях у скрипті.
Далі можна вводити будь-які потрібні команди, наприклад:
#!/bin/bash
echo "сьогодні " `date`
echo -e "\n введіть шлях до каталогу:"
read path_to
echo -e "\n ваш каталог містить файли і папки:"
ls $path_to
Щоб дозволити виконувати скрипт, треба призначити права на виконання своєму користувачеві за допомогою цієї команди:
chmod username+x filename.sh
Розберемо детальніше:
- chmod змінює власника файлу для поточного користувача username;
- +x додає поточному користувачу права на виконання, тобто користувач, який є власником, тепер може запустити скрипт;
- filename.sh — це назва файлу, який треба запустити.
Після надання дозволу можна запускати скрипт одним з цих способів:
sh show_all.sh
bash show_all.sh
./show_all.sh
Післяслово
Bash — це потужний інструмент, який надає можливості для оптимізації та полегшення роботи системного адміністратора та DevOps-інженера. Вивчення та використання скриптової мови підвищує ефективність та продуктивність як новачків, так і досвідчених користувачів.
Проте Bash — це лише одна складова роботи з Linux. Щоб поглибити знання та навчитися працювати з Linux з нуля, рекомендуємо звернути увагу на курси #LINUX BEGINNER та #LINUX BASIC. Реєструйся на навчання, щоб за місяць зрозуміти, чому Linux — це база для будь-якої технічної IT-професії.