Shell
Shell — це командна оболонка, через яку користувач або програма взаємодіє з операційною системою. Shell приймає команди, виконує їх, запускає програми, працює з файлами, каталогами, змінними середовища, процесами, потоками введення-виведення та скриптами автоматизації.
У Unix, Linux і macOS shell є одним із головних інструментів розробника, адміністратора, DevOps-інженера, тестувальника, аналітика й досвідченого користувача. Через shell можна швидко виконувати дії, які в графічному інтерфейсі займали б значно більше часу.
Shell — це текстовий пульт керування операційною системою. Він дозволяє не клацати мишкою, а точно наказувати системі, що робити.
Коротко
| Параметр | Значення |
|---|---|
| Назва | Shell |
| Українською | Командна оболонка |
| Тип | Інтерфейс між користувачем і операційною системою |
| Основне призначення | Виконання команд, запуск програм, автоматизація задач |
| Типові системи | Unix, Linux, macOS, BSD, серверні системи |
| Популярні оболонки | sh, Bash, Zsh, Fish, Ksh, Csh, PowerShell |
| Типові файли скриптів | .sh, .bash, .zsh |
| Головні сфери | DevOps, адміністрування, backend, CI/CD, автоматизація, сервери, тестування |
| Складність для новачків | Низька для базових команд, середня для скриптів, висока для складної автоматизації |
Головна ідея Shell
Головна ідея shell — дати користувачу спосіб керувати системою через команди.
Наприклад, замість того щоб у файловому менеджері вручну відкривати папки, шукати файли й копіювати їх, можна написати:
cp report.txt backup/report.txt
Або знайти всі файли з розширенням .log:
find . -name "*.log"
Shell особливо сильний там, де потрібно багато дрібних дій обʼєднати в одну команду або скрипт.
Shell дозволяє перетворити повторювану ручну роботу на одну команду.
Важливі акценти
| Статус | Теза | Пояснення |
|---|---|---|
| Ключове | Shell потрібен майже всім технічним спеціалістам | Розробники, DevOps, адміністратори, QA й аналітики часто працюють із командним рядком. |
| Ключове | Shell дуже сильний для автоматизації | Повторювані задачі можна оформити у скрипти. |
| Ключове | Shell є основою роботи з Linux-серверами | Більшість серверів адмініструються через командний рядок. |
| Ключове | Shell поєднує програми між собою | Pipes, redirect і командні ланцюжки дозволяють будувати потужні рішення з простих утиліт. |
| Важливо | Shell-команди можуть бути небезпечними | Неправильна команда може видалити файли або змінити систему. |
| Увага | Не треба бездумно копіювати команди з інтернету | Команди можуть містити видалення файлів, зміну прав або запуск шкідливих дій. |
Shell, Terminal і Console
Ці поняття часто плутають.
| Термін | Що означає |
|---|---|
| Shell | Програма, яка приймає й виконує команди |
| Terminal | Вікно або програма, через яку користувач працює з shell |
| Console | Текстовий інтерфейс або системна консоль |
| Command line | Сам спосіб взаємодії через текстові команди |
Terminal — це вікно. Shell — це програма всередині нього, яка розуміє команди.
Популярні Shell-оболонки
| Оболонка | Повна назва | Де використовується | Особливості |
|---|---|---|---|
| sh | Bourne shell | Unix, Linux, POSIX-системи | Класична мінімальна оболонка |
| Bash | Bourne Again SHell | Linux, macOS, сервери, CI/CD | Найпоширеніша shell-оболонка в Linux-світі |
| Zsh | Z shell | macOS, Linux | Зручне автодоповнення, теми, Oh My Zsh |
| Fish | Friendly Interactive Shell | Linux, macOS | Зручна інтерактивна оболонка для людей |
| Ksh | KornShell | Unix-системи | Історично важлива shell з потужними можливостями |
| Csh / Tcsh | C shell / TENEX C shell | Unix/BSD | Синтаксис частково схожий на C |
| PowerShell | Microsoft PowerShell | Windows, Linux, macOS | Обʼєктно-орієнтована shell для адміністрування |
sh
sh — класична Bourne shell. Вона важлива як основа багатьох Unix-систем і POSIX-сумісних скриптів.
Скрипти, які мають працювати максимально переносимо, часто пишуться під sh:
#!/bin/sh echo "Hello from sh"
Bash
Bash — одна з найпопулярніших shell-оболонок.
Bash використовується для:
- командного рядка;
- серверного адміністрування;
- shell-скриптів;
- DevOps;
- Docker;
- CI/CD;
- Linux-автоматизації;
- роботи з файлами;
- запуску cron-задач.
Приклад Bash-скрипта:
#!/bin/bash name="Anna" echo "Hello, $name"
Zsh
Zsh — сучасна й зручна оболонка, популярна серед розробників.
Вона відома завдяки:
- зручному автодоповненню;
- темам;
- плагінам;
- Oh My Zsh;
- гнучкому prompt;
- зручності для щоденної роботи.
Приклад:
echo "Hello from Zsh"
Fish
Fish або Friendly Interactive Shell — оболонка, орієнтована на зручність користувача.
Fish має:
- розумне автодоповнення;
- підказки команд;
- кольоровий синтаксис;
- простіший інтерактивний досвід;
- інший синтаксис скриптів, не повністю сумісний із Bash.
PowerShell
PowerShell — це командна оболонка й мова автоматизації від Microsoft.
Вона відрізняється від Unix shell тим, що часто працює не просто з текстом, а з обʼєктами.
Приклад PowerShell:
Get-Process
PowerShell важливий для:
- Windows-адміністрування;
- Azure;
- Microsoft 365;
- DevOps;
- автоматизації;
- cross-platform сценаріїв.
Для чого використовується Shell
| Напрям | Як використовується Shell | Приклади |
|---|---|---|
| Файли й каталоги | Створення, копіювання, переміщення, пошук | cp, mv, rm, find |
| Сервери | Адміністрування Linux/Unix-систем | ssh, systemctl, journalctl |
| DevOps | Автоматизація розгортання й CI/CD | Docker, GitHub Actions, GitLab CI |
| Backend | Запуск сервісів, міграцій, тестів | npm, php artisan, python manage.py |
| Тестування | Запуск тестів, перевірок, логів | pytest, npm test, grep logs |
| Data processing | Обробка текстових файлів | grep, awk, sed, cut, sort |
| Git | Робота з репозиторіями | git clone, git commit, git push |
| Автоматизація | Скрипти для повторюваних задач | backup.sh, deploy.sh |
Основні команди Shell
| Команда | Що робить |
|---|---|
| pwd | Показує поточний каталог |
| ls | Показує файли й каталоги |
| cd | Переходить у каталог |
| mkdir | Створює каталог |
| touch | Створює порожній файл або оновлює дату файлу |
| cp | Копіює файли |
| mv | Переміщує або перейменовує файли |
| rm | Видаляє файли |
| cat | Виводить вміст файлу |
| less | Переглядає файл посторінково |
| grep | Шукає текст |
| find | Шукає файли |
| chmod | Змінює права доступу |
| chown | Змінює власника файлу |
| ps | Показує процеси |
| kill | Завершує процес |
Навігація файловою системою
Показати поточний каталог:
pwd
Показати файли:
ls
Показати файли детальніше:
ls -la
Перейти в каталог:
cd projects
Повернутися на рівень вище:
cd ..
Перейти в домашній каталог:
cd ~
Робота з файлами
Створити файл:
touch notes.txt
Скопіювати файл:
cp notes.txt backup/notes.txt
Перейменувати файл:
mv notes.txt notes_old.txt
Видалити файл:
rm notes_old.txt
Команда rm видаляє файли. Перед виконанням потрібно уважно перевіряти шлях і назву.
Робота з каталогами
Створити каталог:
mkdir reports
Створити вкладені каталоги:
mkdir -p logs/2026/may
Видалити порожній каталог:
rmdir reports
Видалити каталог із файлами:
rm -r reports
rm -r видаляє каталог разом із вмістом. Це небезпечна команда, якщо шлях вказано неправильно.
Перегляд файлів
Показати вміст файлу:
cat file.txt
Перегляд великого файлу:
less file.txt
Перші рядки файлу:
head file.txt
Останні рядки файлу:
tail file.txt
Стежити за логом у реальному часі:
tail -f app.log
Пошук тексту
Пошук рядка у файлі:
grep "error" app.log
Пошук без урахування регістру:
grep -i "error" app.log
Пошук у всіх файлах каталогу:
grep -R "database" .
Показати номери рядків:
grep -n "error" app.log
Пошук файлів
Знайти файл за назвою:
find . -name "config.yml"
Знайти всі log-файли:
find . -name "*.log"
Знайти файли, змінені за останні 24 години:
find . -mtime -1
Знайти каталоги:
find . -type d
Wildcards
Wildcards — це шаблони для імен файлів.
| Символ | Значення | Приклад |
|---|---|---|
| * | Будь-яка кількість символів | *.txt
|
| ? | Один символ | file?.txt
|
| [] | Один символ із набору | file[123].txt
|
Приклади:
ls *.txt
rm *.tmp
Pipes
Pipe або канал передає результат однієї команди в іншу.
Символ pipe:
|
Приклад:
cat app.log | grep "error"
Порахувати кількість помилок:
grep "error" app.log | wc -l
Знайти процес:
ps aux | grep nginx
Pipes — одна з найсильніших ідей Unix shell: маленькі програми можна поєднувати в потужні ланцюжки.
Redirect
Redirect перенаправляє введення або виведення.
| Символ | Що робить |
|---|---|
| > | Записує результат у файл, перезаписуючи його |
| >> | Додає результат у кінець файлу |
| < | Передає файл як вхідні дані |
| 2> | Перенаправляє помилки |
Приклади:
echo "Hello" > hello.txt
echo "New line" >> hello.txt
command 2> errors.log
Змінні
У shell можна створювати змінні.
name="Anna" echo "$name"
Важливо: навколо знака = не ставлять пробіли.
Правильно:
name="Anna"
Неправильно:
name = "Anna"
Змінні середовища
Змінні середовища доступні процесам.
Показати значення:
echo "$HOME"
echo "$PATH"
Створити змінну середовища:
export APP_ENV=production
Показати всі змінні:
env
PATH
PATH — це змінна середовища, яка містить список каталогів, де shell шукає виконувані програми.
Показати PATH:
echo "$PATH"
Якщо команда не знаходиться, можлива причина — її немає в PATH.
Exit code
Кожна команда повертає код завершення.
Зазвичай:
| Код | Значення |
|---|---|
| 0 | Успішне виконання |
| не 0 | Помилка або особливий стан |
Подивитися код останньої команди:
echo $?
Це важливо для скриптів, CI/CD і автоматизації.
Логічні оператори
Виконати другу команду тільки якщо перша успішна:
mkdir build && cd build
Виконати другу команду, якщо перша завершилась помилкою:
command || echo "Command failed"
Послідовне виконання:
echo "one"; echo "two"
Shell script
Shell script — це файл із командами shell.
Приклад файлу backup.sh:
#!/bin/bash echo "Starting backup..." mkdir -p backup cp *.txt backup/ echo "Backup completed."
Запуск:
bash backup.sh
Або зробити файл виконуваним:
chmod +x backup.sh ./backup.sh
Shebang
Shebang — перший рядок скрипта, який вказує, якою програмою виконувати файл.
Приклад для Bash:
#!/bin/bash
Більш переносимий варіант:
- !/usr/bin/env bash
Для sh:
- !/bin/sh
Коментарі
Коментарі в shell починаються з #.
# Це коментар echo "Hello"
Умови в Bash
Приклад:
#!/bin/bash age=18 if [ "$age" -ge 18 ]; then echo "Дорослий" else echo "Неповнолітній" fi
Порівняння чисел
| Оператор | Значення |
|---|---|
| -eq | дорівнює |
| -ne | не дорівнює |
| -gt | більше |
| -ge | більше або дорівнює |
| -lt | менше |
| -le | менше або дорівнює |
Приклад:
if [ "$count" -gt 10 ]; then echo "More than 10" fi
Перевірка файлів
| Вираз | Значення |
|---|---|
| -f file | файл існує і є звичайним файлом |
| -d dir | каталог існує |
| -e path | шлях існує |
| -r file | файл доступний для читання |
| -w file | файл доступний для запису |
| -x file | файл виконуваний |
Приклад:
if [ -f "config.yml" ]; then echo "Config exists" fi
Цикл for
for file in *.txt; do echo "File: $file" done
Приклад із числами:
for i in 1 2 3 4 5; do
echo "$i"done
Цикл while
count=1 while [ "$count" -le 5 ]; do echo "$count" count=$((count + 1)) done
Арифметика
У Bash арифметика часто пишеться так:
a=5 b=7 sum=$((a + b)) echo "$sum"
Функції
Функція в Bash:
say_hello() {
echo "Hello, $1"
}
say_hello "Anna"
Функція з return code:
check_file() {
if [ -f "$1" ]; then return 0 else return 1 fi}
Аргументи скрипта
У shell-скриптах аргументи доступні через спеціальні змінні.
| Змінна | Значення |
|---|---|
| $0 | Назва скрипта |
| $1 | Перший аргумент |
| $2 | Другий аргумент |
| $@ | Усі аргументи |
| $# | Кількість аргументів |
Приклад:
#!/bin/bash echo "Script: $0" echo "First argument: $1" echo "Arguments count: $#"
Запуск:
./script.sh hello world
Quoting
У shell дуже важливо правильно використовувати лапки.
| Запис | Значення |
|---|---|
| "$var" | Підставляє змінну й зберігає пробіли |
| '$var' | Не підставляє змінну |
| $var | Підставляє змінну, але може некоректно обробити пробіли |
Рекомендовано:
echo "$filename"
а не:
echo $filename
У shell майже завжди краще брати змінні в подвійні лапки: "$var".
Небезпечні команди
Деякі команди потрібно виконувати дуже обережно.
| Команда | Чому небезпечна |
|---|---|
| rm | Видаляє файли |
| rm -r | Видаляє каталоги з вмістом |
| chmod -R | Масово змінює права доступу |
| chown -R | Масово змінює власника |
| dd | Може перезаписати диск або розділ |
| mkfs | Форматує файлову систему |
| kill | Завершує процеси |
Перед виконанням небезпечних команд потрібно розуміти кожен символ у команді.
Права доступу
У Unix/Linux файли мають права доступу.
Подивитися права:
ls -l
Приклад:
-rwxr-xr--
Права:
| Символ | Значення |
|---|---|
| r | read, читання |
| w | write, запис |
| x | execute, виконання |
Зробити скрипт виконуваним:
chmod +x script.sh
chmod
Змінити права:
chmod 755 script.sh
Типові значення:
| Значення | Пояснення |
|---|---|
| 755 | власник може все, інші можуть читати й виконувати |
| 644 | власник може читати й писати, інші тільки читати |
| 600 | тільки власник може читати й писати |
chown
Змінити власника:
sudo chown user:user file.txt
Рекурсивно:
sudo chown -R user:user /path/to/folder
Рекурсивні зміни прав або власника треба виконувати дуже обережно.
sudo
sudo дозволяє виконати команду з правами адміністратора.
Приклад:
sudo apt update
sudo означає, що команда може змінити систему. Перед натисканням Enter потрібно перевірити команду.
Процеси
Показати процеси:
ps aux
Знайти процес:
ps aux | grep nginx
Завершити процес:
kill 1234
Примусово завершити:
kill -9 1234
top і htop
top показує процеси в реальному часі:
top
htop — зручніший інтерактивний варіант, якщо встановлений:
htop
Робота з мережею
Перевірити доступність хоста:
ping example.com
HTTP-запит через curl:
curl https://example.com
Завантажити файл:
curl -O https://example.com/file.zip
Перевірити DNS:
nslookup example.com
Або:
dig example.com
ssh
ssh використовується для підключення до віддаленого сервера.
ssh user@example.com
Підключення з ключем:
ssh -i key.pem user@example.com
Копіювання файлу через scp:
scp file.txt user@example.com:/home/user/
tar і gzip
Створити архів:
tar -czf backup.tar.gz folder/
Розпакувати:
tar -xzf backup.tar.gz
Подивитися вміст архіву:
tar -tzf backup.tar.gz
Shell у DevOps
Shell є базовим інструментом DevOps.
Використовується для:
- встановлення пакетів;
- налаштування серверів;
- запуску контейнерів;
- деплою;
- CI/CD;
- backup;
- логування;
- перевірки healthcheck;
- автоматизації release;
- роботи з Git;
- роботи з Kubernetes;
- роботи з Docker.
Shell і Docker
Приклади команд Docker:
docker ps
docker build -t app .
docker run app
docker logs container_name
Shell часто використовується для скриптів запуску контейнерів.
Shell і Git
Shell часто використовується з Git.
Типові команди:
git status git add . git commit -m "Update" git push
Клонування репозиторію:
git clone https://example.com/repo.git
Shell і CI/CD
У CI/CD shell-команди використовуються для:
- встановлення залежностей;
- запуску тестів;
- збірки;
- деплою;
- перевірки якості;
- створення артефактів.
Приклад:
npm install npm test npm run build
Або:
composer install phpunit
Shell і cron
cron використовується для запуску задач за розкладом.
Відкрити crontab:
crontab -e
Приклад запуску backup щодня о 02:00:
0 2 * * * /home/user/backup.sh
Формат:
хвилина година день_місяця місяць день_тижня команда
Shell і логування
Shell часто використовується для аналізу логів.
Останні рядки:
tail -n 100 app.log
Пошук помилок:
grep -i "error" app.log
Порахувати помилки:
grep -i "error" app.log | wc -l
Стежити за логом:
tail -f app.log
Shell і awk
awk — потужний інструмент обробки тексту.
Приклад:
awk '{print $1}' access.log
Підрахувати суму другого стовпця:
awk '{sum += $2} END {print sum}' data.txt
Shell і sed
sed використовується для потокового редагування тексту.
Замінити текст:
sed 's/old/new/g' file.txt
Вивести рядки з 10 по 20:
sed -n '10,20p' file.txt
Shell і xargs
xargs будує команди з вхідних даних.
Приклад видалення знайдених tmp-файлів:
find . -name "*.tmp" | xargs rm
Більш безпечний варіант для файлів із пробілами:
find . -name "*.tmp" -print0 | xargs -0 rm
Shell і ERP
Shell може бути корисним у ERP-інфраструктурі.
Типові задачі:
- backup бази даних;
- імпорт файлів;
- експорт звітів;
- запуск обмінів;
- обробка CSV;
- архівування логів;
- запуск нічних задач;
- деплой оновлень;
- моніторинг сервісів;
- перевірка дискового простору.
Приклад backup-скрипта:
#!/bin/bash date=$(date +%Y-%m-%d) mkdir -p /backups/$date pg_dump erp_database > /backups/$date/erp_database.sql echo "Backup completed: $date"
Shell і бази даних
Shell часто використовується для роботи з базами даних через CLI-клієнти.
PostgreSQL:
psql -U user -d database
MySQL:
mysql -u user -p database
SQLite:
sqlite3 database.sqlite
Backup PostgreSQL:
pg_dump database > backup.sql
Restore:
psql database < backup.sql
Shell і безпека
Основні правила безпеки:
| Правило | Пояснення |
|---|---|
| Не копіювати команди без розуміння | Команда може бути небезпечною |
| Не запускати скрипти з інтернету напряму | Спочатку треба прочитати вміст |
| Обережно з sudo | Команда з sudo може змінити систему |
| Обережно з rm -r | Можна видалити важливі файли |
| Зберігати секрети безпечно | Паролі й токени не мають бути в коді |
| Використовувати права доступу | Не давати зайвих прав файлам |
Небезпечний підхід:
curl https://example.com/install.sh | bash
Безпечніше:
curl -O https://example.com/install.sh less install.sh bash install.sh
ShellCheck
ShellCheck — інструмент для перевірки shell-скриптів.
Він допомагає знайти:
- помилки quoting;
- небезпечні конструкції;
- неправильні змінні;
- проблеми переносимості;
- типові помилки Bash.
Приклад:
shellcheck script.sh
Хороші практики Shell-скриптів
| Практика | Пояснення |
|---|---|
| Використовувати set -e | Завершувати скрипт при помилці |
| Використовувати set -u | Помилка при використанні невизначеної змінної |
| Використовувати set -o pipefail | Коректно обробляти помилки в pipe |
| Брати змінні в лапки | Захист від пробілів і спецсимволів |
| Перевіряти аргументи | Скрипт має пояснювати, що очікує |
| Логувати дії | Легше шукати помилки |
| Не хардкодити секрети | Паролі й токени мають бути в безпечному сховищі або environment variables |
Приклад початку скрипта:
#!/usr/bin/env bash set -euo pipefail
Приклад якісного Shell-скрипта
#!/usr/bin/env bash set -euo pipefail if [ "$#" -ne 1 ]; then echo "Usage: $0 <directory>" exit 1 fi directory="$1" if [ ! -d "$directory" ]; then echo "Directory does not exist: $directory" exit 1 fi echo "Listing files in: $directory" find "$directory" -type f
Shell у порівнянні з мовами програмування
Shell — це не заміна повноцінним мовам програмування для великих застосунків.
| Інструмент | Коли краще |
|---|---|
| Shell | Автоматизація команд, файлів, серверів, CI/CD |
| Python | Складніша логіка, API, data processing, automation |
| JavaScript / TypeScript | Web, Node.js, frontend/backend |
| Go | CLI-утиліти, сервери, DevOps-інструменти |
| PHP | Web backend і CMS |
| SQL | Робота з базами даних |
Shell ідеальний для склеювання команд. Але якщо логіка стає складною, краще перейти на Python, Go або іншу повноцінну мову.
Коли Shell — хороший вибір
| Задача | Чи підходить Shell? |
|---|---|
| Робота з файлами | Дуже добре |
| Серверне адміністрування | Дуже добре |
| CI/CD-скрипти | Добре |
| Backup | Добре |
| Логи й пошук тексту | Дуже добре |
| Невеликі автоматизації | Добре |
| Великий бізнес-застосунок | Не підходить |
| Складна обробка даних | Можливо, але часто краще Python |
| Web frontend | Не підходить |
Переваги Shell
| Перевага | Пояснення |
|---|---|
| Швидкість роботи | Багато задач можна виконати однією командою |
| Автоматизація | Повторювані дії легко оформити у скрипт |
| Доступність | Shell є майже на кожній Unix/Linux/macOS системі |
| Сильна робота з файлами | Пошук, копіювання, фільтрація, архівація |
| Pipes | Команди можна поєднувати між собою |
| Добре для серверів | Більшість Linux-серверів адмініструються через shell |
| Ідеально для DevOps | CI/CD, Docker, deployment, logs, monitoring |
Недоліки Shell
| Недолік | Пояснення |
|---|---|
| Складний синтаксис для великих скриптів | Bash-скрипти швидко стають важкими для читання |
| Небезпечні команди | Помилка в rm, chmod або chown може дорого коштувати |
| Проблеми з пробілами й quoting | Неправильні лапки можуть зламати скрипт |
| Різні shell мають різний синтаксис | Bash, sh, Zsh і Fish не повністю сумісні |
| Слабка типізація | Усе здебільшого працює як текст |
| Не для великих застосунків | Для складних програм краще повноцінні мови |
| Погана переносимість при неуважності | Скрипт може працювати в Bash, але не працювати в sh |
Типові помилки новачків
| Помилка | Чому це проблема |
|---|---|
| Не брати змінні в лапки | Пробіли в іменах файлів можуть зламати команду |
| Копіювати команди без розуміння | Можна пошкодити систему |
| Плутати > і >> | > перезаписує файл, >> додає в кінець
|
| Запускати rm -r без перевірки | Можна видалити важливі каталоги |
| Не перевіряти exit code | Скрипт може продовжити роботу після помилки |
| Писати Bash-скрипт із shebang /bin/sh | sh може не підтримувати Bash-синтаксис |
| Зберігати паролі в скрипті | Це небезпечно |
Рекомендований шлях навчання Shell
| Етап | Що вивчати |
|---|---|
| 1 | Terminal, shell, command line |
| 2 | pwd, ls, cd |
| 3 | Робота з файлами: cp, mv, rm, mkdir |
| 4 | Перегляд файлів: cat, less, head, tail |
| 5 | Пошук: grep, find |
| 6 | Pipes і redirect |
| 7 | Змінні й environment variables |
| 8 | Bash-скрипти й shebang |
| 9 | Умови, цикли, функції |
| 10 | Права доступу: chmod, chown |
| 11 | Процеси: ps, kill, top |
| 12 | ssh, curl, tar, cron |
| 13 | ShellCheck і хороші практики |
| 14 | DevOps, Docker, CI/CD |
Мінімальний набір для старту
| Компонент | Рекомендація |
|---|---|
| ОС | Linux, macOS або WSL у Windows |
| Shell | Bash або Zsh |
| Редактор | VS Code, Vim, Nano |
| Перші команди | pwd, ls, cd, cat, grep, find |
| Перший скрипт | backup.sh або простий hello.sh |
| Перевірка | ShellCheck |
| Практика | Логи, файли, backup, Git, Docker |
Приклад навчального скрипта
Скрипт створює backup каталогу.
#!/usr/bin/env bash set -euo pipefail source_dir="$1" backup_dir="backup" if [ ! -d "$source_dir" ]; then echo "Source directory does not exist: $source_dir" exit 1 fi mkdir -p "$backup_dir" archive_name="backup-$(date +%Y-%m-%d-%H-%M-%S).tar.gz" tar -czf "$backup_dir/$archive_name" "$source_dir" echo "Backup created: $backup_dir/$archive_name"
Запуск:
./backup.sh documents
Простими словами
Shell — це спосіб швидко керувати компʼютером або сервером через текстові команди.
Якщо графічний інтерфейс — це кнопки й вікна, то Shell — це прямий діалог із системою.
Висновок
Shell — один із найважливіших інструментів в IT.
Він потрібен для:
- Linux і Unix;
- серверного адміністрування;
- DevOps;
- CI/CD;
- Docker;
- Git;
- автоматизації;
- backup;
- логів;
- роботи з файлами;
- тестування;
- backend-розробки;
- ERP-інфраструктури.
Shell не завжди підходить для великих програм, але він незамінний для автоматизації, серверів і щоденної технічної роботи.
Shell — це не просто командний рядок. Це універсальний інструмент, який дозволяє програмісту й адміністратору керувати системою швидко, точно й автоматизовано.
Джерела
- GNU Bash Manual: https://www.gnu.org/software/bash/manual/
- POSIX Shell Command Language: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
- Zsh Documentation: https://zsh.sourceforge.io/Doc/
- Fish Shell Documentation: https://fishshell.com/docs/current/
- Microsoft PowerShell Documentation: https://learn.microsoft.com/en-us/powershell/
- ShellCheck: https://www.shellcheck.net/
- The Linux man-pages project: https://www.kernel.org/doc/man-pages/
- GNU Coreutils: https://www.gnu.org/software/coreutils/manual/