Skip to content

Лекція 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 має змінні:

Terminal window
name="Marko"
echo "$name"

А конструкція $(command) бере текстовий результат команди:

Terminal window
kernel=$(uname -r)
echo "Kernel: $kernel"

Так ми можемо побудувати простий системний звіт.

Python: print("hello"); Bash: echo "hello". Обидві мови можуть виводити текст, але мають різний синтаксис і екосистему.

chmod +x mission.sh використовує знання про права доступу з лекції 26.

./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"

Потім:

Terminal window
chmod +x mission.sh
./mission.sh
./mission.sh > report.txt
cat report.txt

HOME — змінна середовища. Не додаємо до звіту IP, токени або інші зайві приватні дані.

Виконай місію по черзі. Якщо щось не виходить — спочатку перечитай приклад вище й спробуй знайти, на якому кроці результат відрізняється.

  1. створи й запусти mission.sh
  2. додай рядок із кількістю CPU через nproc
  3. збережи вивід у report.txt через >
  4. додай до скрипта поточну дату через date
  5. поясни, коли запускаємо bash mission.sh, а коли ./mission.sh і навіщо потрібен chmod +x
  • Що таке shell script?
  • Що робить shebang?
  • Для чого $(...)?
  • Чим Bash-скрипт схожий на Python-скрипт?
  • Що робить ./mission.sh > report.txt?
  • 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 дозволяють запускати файл напряму
  • знання про файли, права, команди й потоки складаються в одну практичну навичку

Хакерський принцип: не запам’ятовуй магічні слова. Намагайся пояснити своїми словами, що відбулося і чому.