Що таке Bash і як запустити перший скрипт

Автор: Опубліковано

Коротко: Bash — це системна оболонка, тобто програма, яка зчитує команди користувача й передає їх на виконання. Вона дає змогу працювати з файлами, запускати програми й автоматизувати повторювані завдання за допомогою скриптів. Bash часто використовують у Linux, він також доступний у macOS, а в Windows ним можна користуватися, зокрема, через WSL або Git Bash.

Для чого потрібен Bash?

Назва Bash походить від Bourne Again SHell і відсилає до попередньої оболонки Bourne. Тут є гра слів: Bourne Again звучить як «born again» — «народжений знову». Bash — це водночас інтерактивний інструмент для введення команд і скриптова мова. Скрипт — текстовий файл з інструкціями, які виконує інтерпретатор, у цьому випадку Bash.

В інтерактивному режимі ви вводите команду й одразу отримуєте результат. У скрипті ви записуєте послідовність дій, яку згодом можна виконати знову, не повторюючи кожен крок вручну.

Bash корисний, зокрема, для:

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

Bash, термінал і команди — різні речі

Термінал — це інтерфейс, у якому ви вводите текст і читаєте відповіді. На персональному комп’ютері це найчастіше програма, що емулює термінал. Оболонка працює всередині такого сеансу: вона інтерпретує введені інструкції. Bash — одна з оболонок; серед інших — Zsh, Fish і PowerShell.

Отже, саме відкриття термінала ще не означає, що ви користуєтеся Bash. У новіших інсталяціях macOS оболонкою за замовчуванням зазвичай є Zsh, а термінал у Windows може відкрити, наприклад, PowerShell або середовище Linux.

Не кожна команда, яку використовують у Bash, є його частиною. cd, що змінює каталог, — це вбудована команда. Натомість ls, grep чи mkdir зазвичай є окремими програмами, які запускає оболонка. Доступність таких інструментів і підтримуваних ними параметрів залежить від середовища.

Bash може поєднувати програми за допомогою конвеєра, позначеного символом |. Конвеєр передає стандартний вивід однієї команди на стандартний ввід наступної:

printf '%s\n' 'zvit.txt' 'foto.jpg' | grep '\.txt$'

Тут printf виводить дві назви, а grep вибирає рядок, що закінчується на .txt. Це лише фільтрування тексту — приклад не створює й не шукає файлів на диску.

Як перевірити доступність і запустити Bash

У Linux Bash часто вже встановлений. macOS також надає Bash, хоча його версія може відрізнятися від версій, доступних в інших середовищах. Щоб перевірити наявність програми та її версію, введіть у терміналі:

bash --version

Ця перевірка не підтверджує, що поточний сеанс використовує Bash: вона лише запускає доступну програму з параметром виведення версії. Команда bash розпочне сеанс цієї оболонки, а exit завершить його. Уже в Bash ви можете перевірити версію поточної оболонки за допомогою printf '%s\n' "$BASH_VERSION".

У Windows два популярні рішення мають різне призначення. WSL, тобто підсистема Windows для Linux, дає змогу користуватися середовищем Linux. Git Bash надає Bash і набір інструментів, корисних, зокрема, для роботи з Git, але не є повноцінним середовищем Linux. Актуальні вимоги до встановлення перевіряйте в документації Microsoft або Git for Windows.

Перший скрипт у безпечному тестовому каталозі

Наведений нижче приклад створює два порожні звіти й переносить їх у підкаталог. Спочатку створіть новий робочий каталог і перейдіть до нього:

mkdir bash-proba
cd bash-proba

Якщо каталог уже існує, виберіть іншу назву. Продовжуйте лише після успішного переходу до нового каталогу. У текстовому редакторі створіть у ньому файл vporiadkui.sh з таким вмістом:

#!/usr/bin/env bash

kataloh="zvity"
mkdir -p "$kataloh" || exit 1
touch zvit-01.txt zvit-02.txt || exit 1

for fail in zvit-*.txt; do
  mv -- "$fail" "$kataloh/" || exit 1
done

printf 'Звіти перенесено до каталогу: %s\n' "$kataloh"

Перший рядок, який називають shebang, указує інтерпретатор для безпосереднього запуску файлу. Змінна kataloh зберігає назву цільового каталогу, а цикл for повторює операцію для кожної назви файлу, що відповідає шаблону. Запис || exit 1 перериває виконання скрипту, якщо попередня команда повідомить про помилку.

Запустіть скрипт і перевірте результат:

bash vporiadkui.sh
ls zvity

За такого способу запуску файл не потребує права на виконання: інтерпретатор ви вказуєте командою bash. Лапки навколо змінних захищають, зокрема, назви з пробілами від поділу на окремі аргументи.

Коли використовувати Bash і на що зважати

Bash — вдалий вибір, коли завдання полягає переважно в поєднанні наявних інструментів і роботі з файлами. Для розгалуженої логіки, складних структур даних або більшого застосунку код на Python чи іншій мові загального призначення часто буде зрозумілішим і простішим для тестування.

Команди виконуються з правами користувача, який їх запускає. Видалення файлу через rm зазвичай не переміщує його до кошика, а перенаправлення > може перезаписати вміст наявного файлу. Не запускайте скопійовані інструкції з sudo — інструментом, що дає змогу виконувати команди з правами іншого користувача, — доки не зрозумієте, що вони роблять.

Для початку змініть приклад скрипту так, щоб він замість mv лише виводив назви файлів через printf. Перевіряти список перед внесенням змін — проста звичка, яка стане в пригоді й під час роботи зі справжніми даними.

Дивіться також: Що таке shell?

Читайте також

Дізнайтеся, як PHP-FPM обробляє запити PHP, чим відрізняється від вебсервера та як налаштувати процеси під трафік і ресурси хостингу.
Дізнайтеся, як BIND обслуговує DNS, чим відрізняються його серверні ролі та коли варто розгортати його самостійно замість керованої послуги.
Дізнайтеся, що означають польський реєстр і номер REGON, чим вони відрізняються від NIP та KRS і як перевірити дані підприємства.