Що таке Bash і як запустити перший скрипт
Автор: Редакція Domeny.ForSale Опубліковано
Коротко: 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?
