Перейти до вмісту

Shell

Матеріал з K2 ERP Wiki Ukraine — База знань з автоматизації та санкцій в Україні

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

Більш переносимий варіант:

  1. !/usr/bin/env bash

Для sh:

  1. !/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 — це не просто командний рядок. Це універсальний інструмент, який дозволяє програмісту й адміністратору керувати системою швидко, точно й автоматизовано.

Джерела