Лекція 51. Перший Bash-скрипт
Лекція 51. Перший Bash-скрипт
Section titled “Лекція 51. Перший Bash-скрипт”Рівень 9: Linux-інженер лабораторії
Марко, сьогодні ми не просто вивчимо новий термін — ми відкриємо ще один шар того, як насправді працює комп’ютер.
Що ми сьогодні розкриємо
Section titled “Що ми сьогодні розкриємо”- зрозуміти shell script як файл команд
- порівняти Bash і Python
- створити виконуваний скрипт, який збирає безпечні системні факти
Зв’язок з попередніми лекціями
Section titled “Зв’язок з попередніми лекціями”У цій лекції ми використаємо знання про shell і команди з лекції 50, щоб навчитися записувати їх у файл скрипта.
Bash може бути не лише інтерактивним shell
Section titled “Bash може бути не лише інтерактивним shell”Команди, які ти вводиш одну за одною, можна записати у файл. Такий файл називають shell script. Bash прочитає його зверху вниз і виконає команди.
Це схоже на Python-скрипт, але мова інша й сильні сторони інші. Bash особливо зручний для запуску системних команд і з’єднання інструментів.
Shebang пояснює, яким інтерпретатором запускати файл
Section titled “Shebang пояснює, яким інтерпретатором запускати файл”Перший рядок:
#!/usr/bin/env bash— це shebang. Коли файл має право x і запускається як ./mission.sh, система використовує цей рядок, щоб знайти відповідний інтерпретатор.
Можна також запускати bash mission.sh без execute bit, бо тоді ти прямо запускаєш Bash і передаєш йому файл.
Змінні та підстановка команд
Section titled “Змінні та підстановка команд”Bash має змінні:
name="Marko"echo "$name"А конструкція $(command) бере текстовий результат команди:
kernel=$(uname -r)echo "Kernel: $kernel"Так ми можемо побудувати простий системний звіт.
Приклади
Section titled “Приклади”Приклад 1
Section titled “Приклад 1”Python: print("hello"); Bash: echo "hello". Обидві мови можуть виводити текст, але мають різний синтаксис і екосистему.
Приклад 2
Section titled “Приклад 2”chmod +x mission.sh використовує знання про права доступу з лекції 26.
Приклад 3
Section titled “Приклад 3”./mission.sh > report.txt поєднує скрипт із перенаправленням із лекції 50.
Linux-лабораторія: Marko System Badge
Section titled “Linux-лабораторія: Marko System Badge”Створи ~/marko-lab/bash/mission.sh:
#!/usr/bin/env bash
name="Marko"kernel=$(uname -r)os=$(grep '^PRETTY_NAME=' /etc/os-release | cut -d= -f2-)
printf '=== System Badge ==='printf 'Engineer: %s' "$name"printf 'OS: %s' "$os"printf 'Kernel: %s' "$kernel"printf 'Home: %s' "$HOME"Потім:
chmod +x mission.sh./mission.sh./mission.sh > report.txtcat report.txtHOME — змінна середовища. Не додаємо до звіту IP, токени або інші зайві приватні дані.
Місія для Марка
Section titled “Місія для Марка”Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.
- створи й запусти
mission.sh - додай рядок із кількістю CPU через
nproc - збережи вивід у
report.txtчерез> - додай до скрипта поточну дату через
date - поясни, коли запускаємо
bash mission.sh, а коли./mission.shі навіщо потрібенchmod +x
Перевір себе
Section titled “Перевір себе”- Що таке shell script?
- Що робить shebang?
- Для чого
$(...)? - Чим Bash-скрипт схожий на Python-скрипт?
- Що робить
./mission.sh > report.txt?
Терміни однією фразою
Section titled “Терміни однією фразою”- Shell script — файл із командами, який Bash читає зверху вниз.
- Shebang (
#!/usr/bin/env bash) — перший рядок, який каже, яким інтерпретатором запускати файл. chmod +x— додає право на виконання файлу.$(command)— підстановка результату команди в Bash.- Змінна Bash — іменований контейнер для тексту (наприклад
name="Marko"). $HOME— шлях до домашнього каталогу користувача.nproc— показує кількість логічних CPU.
Чек-лист перед наступною лекцією
Section titled “Чек-лист перед наступною лекцією”- Чи можеш ти пояснити, що таке shebang та навіщо він потрібен у скриптах?
- Чи вмієш ти створювати shell-скрипти з використанням змінних?
- Чи розумієш ти, як автоматизувати завдання за допомогою Bash-скриптів?
Що потрібно винести з лекції
Section titled “Що потрібно винести з лекції”- Bash дозволяє автоматизувати послідовності системних команд
- shebang і execute permission дозволяють запускати файл напряму
- знання про файли, права, команди й потоки складаються в одну практичну навичку
Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.