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

Shell

Матеріал з K2 ERP Wiki

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
  1. !/usr/bin/env bash
Пояснення
  1. !/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 ==

  1. !/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

Рекомендований шлях навчання Shell

echo "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 |} == Висновок ==

  1. !/usr/bin/env bash

!Що означає find .== Робота з каталогами ==

echo "$name"

  1. !/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

  1. !/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

Знайти бізнес-процес:

  1. !/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''' |Другий аргумент |- |'''$@''' |Усі аргументи |- |'''$#''' |Кількість аргументів |} == Приклад навчального скрипта ==

  1. !/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 або іншу повноцінну мову.
  1. !/bin/bash

!Значення == Джерела ==

!Значення

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

Shell — це не заміна повноцінним мовам програмування для великих застосунків. {| class="wikitable" !Практика ls {| class="wikitable sortable" phpunit nslookup example.com echo "Arguments count: $#"

Shell і xargs

echo "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"