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