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

Bash

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

kill -9 1234

npm install

'''Terminal  це вікно. Чи підходить Bash? Інструмент
say_hello "Anna"
== tar ==

directory="$1"
<syntaxhighlight lang="bash">
find "$directory" -type f
done

Приклад резервного копіювання PostgreSQL:
Завершити бізнес-процес:

Bash і Git

Небажано: find . Приклад backup-скрипта: </syntaxhighlight>
'''Якщо Linux-сервер — це машина, то Bash — це панель керування, через яку розробник або адміністратор запускає, перевіряє, ремонтує й автоматизує роботу системи.'''
<syntaxhighlight lang="bash">
done
fi
echo "one"; echo "two"
! git push

Перевірити код останньої команди:

<syntaxhighlight lang="bash">

echo "$name"

Примусово завершити: </syntaxhighlight>

echo "Config missing"

</syntaxhighlight>

<syntaxhighlight lang="bash">

scp file.txt user@example.com:/home/user/

</blockquote>
Створити каталог:
<syntaxhighlight lang="bash">

Створимо файл <code>hello.sh</code>:

Запустити Bash:
Приклад:
Дізнатися шлях до Bash:

Символ pipe:

<blockquote>

ps aux

== Головна ідея Bash ==

fi

</syntaxhighlight>

Bash і cron

</syntaxhighlight> </syntaxhighlight>

curl -O https://example.com/install.sh

Показати номери рядків: date=$(date +%Y-%m-%d)

Bash в ERP-інфраструктурі

Приклад: pip install -r requirements.txt

echo "Database backup created"

exit 1
for item in apple banana orange; do Bash здатна бути корисним для ERP-систем. Помилка echo "New line" >> hello.txt tar -czf "$backup_dir/files.tar.gz" /var/www vendor/bin/phpunit Видалити каталог із вмістом: Функція з кодом повернення: sudo запускає команду з правами адміністратора. Значення
Приклад для PHP:

echo "First argument: $1"
Рекомендовано:
echo "Hello, Bash!"

</syntaxhighlight>

Неправильно: Скопіювати файл:

Redirect

0 Успішне виконання
не 0 Помилка або особливий стан
echo "Directory does not exist: $directory"

Пошук у каталозі:

'''ShellCheck'''  інструмент для перевірки Bash/shell-скриптів. Пояснення
<syntaxhighlight lang="bash">

grep -i "error" app.log

! Запис
У Bash дуже критично правильно використовувати лапки. -name "*.log"

<syntaxhighlight lang="bash">
! fi
Приклади:
|-
| '''ОС'''
| Linux, macOS або WSL у Windows
|-
| '''Shell'''
| Bash
|-
| '''Редактор'''
| VS Code, Vim або Nano
|-
| '''Перші команди'''
| ls, cd, cat, grep, find
|-
| '''Перший скрипт'''
| hello.sh або backup.sh
|-
| '''Перевірка'''
| ShellCheck
|-
| '''Практика'''
| Логи, backup, Git, Docker, cron
|}

Підключення з ключем:

== set -euo pipefail ==

echo "Arguments count: $#"
 echo "Config exists"
<syntaxhighlight lang="bash">

Видалити файл:

for file in *.txt; do

Знайти всі log-файли:

* роботи з Linux;
* серверного адміністрування;
* автоматизації;
* backup;
* CI/CD;
* Docker;
* Git;
* cron;
* аналізу логів;
* деплою;
* ERP-інфраструктури;
* щоденної роботи розробника. Рекомендація

git status
Класичний варіант:
<syntaxhighlight lang="bash">
|-
| <code>rm</code>
| Видаляє файли
|-
| <code>rm -r</code>
| Видаляє каталоги з вмістом
|-
| <code>chmod -R</code>
| Масово змінює права
|-
| <code>chown -R</code>
| Масово змінює власника
|-
| <code>dd</code>
| здатна перезаписати диск або розділ
|-
| <code>mkfs</code>
| Форматує файлову систему
|}

exec "$@"
Приклад для Python:
 echo "Config not found"

Змінні середовища доступні дочірнім процесам. command -v bash
Опція

Bash і Docker

</syntaxhighlight> echo "$PATH"

! Пояснення

<syntaxhighlight lang="bash">
Якщо команда не запускається, можливо, її немає в PATH. Пояснення

! Bash виступає як розвитком класичної оболонки '''sh''' і став однією з найпоширеніших shell-оболонок у світі Unix/Linux. Значення
Bash дає можливість вводити команди вручну або записувати їх у файл-скрипт. {| class="wikitable"
|-
| 1
| Terminal, shell, Bash
|-
| 2
| pwd, ls, cd
|-
| 3
| Робота з файлами: cp, mv, rm, mkdir
|-
| 4
| cat, less, head, tail
|-
| 5
| grep і find
|-
| 6
| Pipes і redirect
|-
| 7
| Змінні й quoting
|-
| 8
| Аргументи скрипта
|-
| 9
| if, test, перевірка файлів
|-
| 10
| for, while
|-
| 11
| functions
|-
| 12
| exit codes
|-
| 13
| set -euo pipefail
|-
| 14
| ShellCheck
|-
| 15
| cron, ssh, curl, tar
|-
| 16
| Docker, Git, CI/CD
|}

Bash потрібен для:

Команда <code>echo</code> виводить текст у консоль. Значення

<syntaxhighlight lang="bash">

Функція без аргументів:
#!/usr/bin/env bash
Приклад:

{| class="wikitable"
Знайти бізнес-процес:
sudo apt update

<syntaxhighlight lang="bash">

find /var/log -type f -size +100M

  1. Це коментар

echo "Починаємо роботу" </syntaxhighlight>

echo "$count"

</syntaxhighlight>

echo $filename

find шукає файли й каталоги.== grep ==

Типові задачі:

</syntaxhighlight>

awk

cat app.log | grep "error"


<blockquote>

</syntaxhighlight>
</blockquote>
git clone https://example.com/repo.git

'''Bash — це не без зусиль оболонка. echo "Hello" > hello.txt

shellcheck script.sh

tar -xzf backup.tar.gz
'''Команда з <code>sudo</code> здатна змінити систему.== Bash і CI/CD ==
</syntaxhighlight>

хвилина година день_місяця місяць день_тижня команда

! Як застосовується для Bash

</syntaxhighlight>

[[Категорія:CI/CD]]

! Значення
mkdir -p backup
else
mkdir -p logs/2026/may

<syntaxhighlight lang="bash">

Виконати другу команду, якщо перша завершилась помилкою:

</syntaxhighlight>
 echo "Дорослий"
composer install

<syntaxhighlight lang="bash">

export APP_ENV=production
<syntaxhighlight lang="bash">
 if [ -f "$1" ]; then

</syntaxhighlight>

<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
Замінити текст:

Вивести рядки з 10 по 20:

<syntaxhighlight lang="bash">

Запуск через bash:

</syntaxhighlight>
</syntaxhighlight>
</syntaxhighlight>

<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">
<blockquote>
curl https://example.com
|-
| '''755'''
| власник здатна все, інші можуть читати й виконувати
|-
| '''644'''
| власник здатна читати й писати, інші тільки читати
|-
| '''600'''
| тільки власник здатна читати й писати
|}

</syntaxhighlight>

!== sed ==

less install.sh

</syntaxhighlight>
<syntaxhighlight lang="bash">

</blockquote>
== Bash, Shell і Terminal ==
</blockquote>
[[Категорія:Unix]]
== ShellCheck ==

</syntaxhighlight>

<syntaxhighlight lang="bash">

</syntaxhighlight>
як приклад, вручну можна виконати:
Копіювання файлу через scp:

set -euo pipefail

echo "Strict mode enabled"
<syntaxhighlight lang="bash">

chmod +x script.sh

Створити змінну середовища:
</syntaxhighlight>
== Цикл while ==
Приклад:
[[Категорія:Командний рядок]]

<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">

npm test
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
git commit -m "Update"

</syntaxhighlight>
<syntaxhighlight lang="bash">

 count=$((count + 1))

Створити архів:
</syntaxhighlight>
ssh -i key.pem user@example.com
Redirect перенаправляє введення або виведення. Напрям

name = "Anna"
</syntaxhighlight>
docker run app

== Bash і backup ==
Приклад перевірки місця на диску:
backup_dir="/backups/postgres"
|-
| <code>set -e</code>
| завершити скрипт при помилці
|-
| <code>set -u</code>
| помилка при використанні невизначеної змінної
|-
| <code>set -o pipefail</code>
| pipe вважається помилковим, якщо помилилась будь-яка команда в ланцюжку
|}

'''Bash перетворює командний рядок на мову автоматизації.'''

</syntaxhighlight>
#!/usr/bin/env bash

</syntaxhighlight>

grep "error" app.log
</syntaxhighlight>

<syntaxhighlight lang="bash">

'''ssh''' застосовується для для підключення до сервера. Задача

</syntaxhighlight>

<blockquote>
 echo "Name is not empty"
</syntaxhighlight>
|-
| <code>></code>
| записати результат у файл, перезаписавши його
|-
| <code>>></code>
| додати результат у кінець файлу
|-
| <code><</code>
| взяти вхідні інформаційні дані з файлу
|-
| <code>2></code>
| перенаправити помилки
|}

<syntaxhighlight lang="bash">

! Значення

</syntaxhighlight>
chmod +x hello.sh
a=5
|-
| <code>"$var"</code>
| Підставляє змінну й зберігає пробіли
|-
| <code>'$var'</code>
| Не підставляє змінну
|-
| <code>$var</code>
| Підставляє змінну, але здатна зламатися на пробілах
|}

'''PATH''' — це список каталогів, у яких Bash шукає виконувані команди. return 0
{| class="wikitable"

<syntaxhighlight lang="bash">

!<syntaxhighlight lang="bash">

Правильно:

echo "Script name: $0"
<syntaxhighlight lang="bash">

== Типові помилки новачків ==

chmod 755 script.sh
<syntaxhighlight lang="bash">
if [ -n "$name" ]; then
|-
| '''Доступність'''
| Bash виступає як майже на кожному Linux-сервері
|-
| '''Швидкість автоматизації'''
| Багато задач можна цифровізувати за кілька рядків
|-
| '''інтеграційні функції ERP з Unix-утилітами'''
| grep, find, awk, sed, tar, curl, ssh
|-
| '''Потужні pipes'''
| Команди швидко поєднувати
|-
| '''Добрий для DevOps'''
| Deployment, CI/CD, backup, Docker
|-
| '''Простий старт'''
| Перші команди швидко вивчити
|-
| '''Ідеальний для серверів'''
| Linux-сервери часто адмініструються через Bash
|}

== find ==

npm run build
{| class="wikitable"
z=$((20 / 4))
|-
| '''Складність великих скриптів'''
| Bash погано підходить для великих програм
|-
| '''Проблеми з quoting'''
| Пробіли й спецсимволи часто створюють помилки
|-
| '''Слабка типізація'''
| Усе здебільшого виступає як текстом
|-
| '''Небезпечні команди'''
| Помилка здатна видалити або змінити важливі файли
|-
| '''Погана читабельність складної логіки'''
| Для складних задач краще Python, Go або інша мова
|-
| '''Різниця між sh і bash'''
| Bash-скрипт здатна не працювати в sh
|}

sum=$((a + b))

Більш переносимий варіант:
</syntaxhighlight>
<syntaxhighlight lang="bash">
|-
| '''Не ставити лапки навколо змінних'''
| Пробіли в іменах файлів можуть зламати скрипт
|-
| '''Писати <code>name = value</code>'''
| У Bash так не оголошуються змінні
|-
| '''Плутати <code>></code> і <code>>></code>'''
| <code>></code> перезаписує файл, <code>>></code> додає
|-
| '''Запускати <code>rm -r</code> без перевірки'''
| Можна видалити важливі файли
|-
| '''Використовувати Bash-синтаксис із <code>#!/bin/sh</code>'''
| sh здатна не підтримувати Bash-можливості
|-
| '''Ігнорувати exit code'''
| Скрипт здатна продовжитись після помилки
|-
| '''Зберігати паролі в скрипті'''
| Це небезпечно
|}

Запуск:

fi
echo "Цей рядок виконається"
</syntaxhighlight>
|-
| автоматизація процесів команд
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| Linux server administration
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| Backup-скрипти
| style="background:#d4edda; color:#155724; font-weight:bold;" | Добре
|-
| CI/CD steps
| style="background:#d4edda; color:#155724; font-weight:bold;" | Добре
|-
| Логи й текстові файли
| style="background:#d4edda; color:#155724; font-weight:bold;" | Дуже добре
|-
| Docker entrypoint
| 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;" | Не підходить
|}

find . Код
#!/usr/bin/env bash

= Bash =

</syntaxhighlight>
== Арифметика ==
<syntaxhighlight lang="bash">
</syntaxhighlight>

== xargs ==

== Висновок ==
</syntaxhighlight>
Bash часто використовують у Docker entrypoint-скриптах. Перед виконанням треба уважно перевірити шлях.'''

 fi
== Робота з каталогами ==
</syntaxhighlight>
{| class="wikitable"

Послідовне виконання:

</syntaxhighlight>
<syntaxhighlight lang="bash">
bash install.sh
|-
| <code> "$a" = "$b" </code>
| рядки рівні
|-
| <code> "$a" != "$b" </code>
| рядки не рівні
|-
| <code> -z "$a" </code>
| рядок порожній
|-
| <code> -n "$a" </code>
| рядок не порожній
|}

<blockquote>

echo "$filename"
command || echo "Command failed"

}
== Quoting ==
! grep -R "database" . Компонент
</syntaxhighlight>

<syntaxhighlight lang="bash">

'''sed''' застосовується для для потокового редагування тексту. ! Перевага

== Мінімальний набір для старту ==

Перебір значень:
[[Категорія:Мови програмування]]
<syntaxhighlight lang="bash">

echo "Готово"

== Порівняння рядків ==
</syntaxhighlight>
== Хороші практики Bash ==

Приклад:

</syntaxhighlight>
echo "Starting application..."
find . Порівняння з Bash

<syntaxhighlight lang="bash">
! Вираз
#!/usr/bin/env bash

count=1

'''Bash — це інструмент, який дає можливість керувати системою, запускати команди й цифровізувати повторювану роботу через скрипти.'''
filename="my file.txt"
</syntaxhighlight>
Показати всі змінні середовища:
<syntaxhighlight lang="bash">
</syntaxhighlight>

== Функції ==

Зробити скрипт виконуваним:
<blockquote>
Завантажити файл:
|-
| <code>-eq</code>
| дорівнює
|-
| <code>-ne</code>
| не дорівнює
|-
| <code>-gt</code>
| більше
|-
| <code>-ge</code>
| більше або дорівнює
|-
| <code>-lt</code>
| менше
|-
| <code>-le</code>
| менше або дорівнює
|}

sed -n '10,20p' file.txt

! Значення
mv notes.txt notes_old.txt
check_file() {
|-
| '''Використовувати <code>set -euo pipefail</code>'''
| Скрипт краще реагує на помилки
|-
| '''Брати змінні в лапки'''
| Захист від пробілів і спецсимволів
|-
| '''Перевіряти аргументи'''
| Скрипт має пояснювати, що очікує
|-
| '''Не хардкодити паролі'''
| Секрети мають бути в environment variables або secret storage
|-
| '''Логувати дії'''
| Легше розбирати помилки
|-
| '''Використовувати ShellCheck'''
| Автоматична перевірка скриптів
|-
| '''Розділяти складну логіку на функції'''
| Скрипт легше читати й підтримувати
|}

cp *.txt backup/

! Вивести першу колонку:

</syntaxhighlight>

<syntaxhighlight lang="bash">

grep -n "error" app.log
#!/bin/bash
!== Умови if ==
grep "error" app.log | wc -l

{| class="wikitable"
== Встановлення і доступність ==

pg_dump "$database" > "$backup_dir/$database-$date.sql"

if [ ! -name "config.yml"

<syntaxhighlight lang="bash">

<blockquote>

mkdir -p "$backup_dir"

tar -czf backup.tar.gz folder/
say_hello
echo $? Небезпечні команди треба перевіряти до запуску.'''

Знайти каталоги:

== конкурентні переваги Bash ==
</syntaxhighlight>
{| class="wikitable"

</syntaxhighlight>

== Shebang ==
find . age=18

У Bash змінні створюються без пробілів навколо знака <code>=</code>. Символ
! Вираз
Розпакувати архів:
if [ "$count" -gt 10 ]; then
Кожна команда повертає код завершення. Змінна
#!/usr/bin/env bash

<syntaxhighlight lang="bash">

== Джерела ==

 -d '{"name":"Anna"}'
echo "Listing files in: $directory"

</syntaxhighlight>

 echo "Hello"

if [ "$age" -ge 18 ]; then

<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">
!<syntaxhighlight lang="bash">
! tar -tzf backup.tar.gz

== PATH ==

</syntaxhighlight>

'''Pipe''' передає результат однієї команди в іншу.</syntaxhighlight>

if [ "$#" -ne 1 ]; then
<syntaxhighlight lang="bash">
<blockquote>

<syntaxhighlight lang="bash">

* GNU Bash Manual: https://www.gnu.org/software/bash/manual/
* GNU Bash: https://www.gnu.org/software/bash/
* POSIX Shell Command Language: https://pubs.opengroup.org/onlinepubs/9699919799/utilities/V3_chap02.html
* ShellCheck: https://www.shellcheck.net/
* GNU Coreutils Manual: https://www.gnu.org/software/coreutils/manual/
* Linux man-pages: https://www.kernel.org/doc/man-pages/

<syntaxhighlight lang="bash">
POST-запит із JSON:
git add . Приклади

Приклад пошуку великих файлів:
#!/usr/bin/env bash

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

 -H "Content-Type: application/json" \

</syntaxhighlight>
Порахувати суму другої колонки:
Запуск:

date=$(date +%Y-%m-%d-%H-%M-%S)

database="erp_database"
[[Категорія:Bash]]
'''chmod''' змінює права доступу. Показати домашній каталог:

!<syntaxhighlight lang="bash">

set -e

== Цикл for ==
<blockquote>
 exit 1

== curl ==

* помилки quoting;
* невизначені змінні;
* небезпечні конструкції;
* проблеми переносимості;
* типові помилки Bash. Значення

backup_dir="/backups/$date"

Коментарі починаються з символу <code>#</code>. Практика
== Процеси ==
== Bash у порівнянні з іншими інструментами ==

y=$((4 * 5))

== sudo ==

<syntaxhighlight lang="bash">

set -euo pipefail
{| class="wikitable"
[[Категорія:Docker]]

bash

</syntaxhighlight>

</syntaxhighlight>

Виконати другу команду тільки якщо перша успішна:
Окремо варто відзначити яка широко застосовують, коли потрібно в Linux, Unix-подібних системах, macOS, DevOps, CI/CD, адмініструванні серверів, автоматизації задач, роботі з файлами, логами, процесами, Docker, Git і іншими інструментами командного рядка виступає ключовою рисою '''Bash''' або '''Bourne Again SHell'''. Значення
<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">

[[Категорія:DevOps]]

Показати PATH:
if [ -f "config.yml" ]; then
!</syntaxhighlight>

<syntaxhighlight lang="bash">
</syntaxhighlight>
У Bash-скриптах часто використовують суворіші конфігурація. Параметр
! Приклад:
Приклад:
Приклади команд Docker:

<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">
</blockquote>
== Логічні оператори ==

'''xargs''' створює команди з вхідних даних. if check_file "config.yml"; then
}
<syntaxhighlight lang="bash">
! ! Пошук у файлі:

! На більшості Linux-систем Bash уже встановлений. Чому небезпечна
 echo "Config exists"
<syntaxhighlight lang="bash">

rm notes_old.txt

echo "Hello from Bash script"

== Змінні ==

Безпечніший варіант для файлів із пробілами:
{| class="wikitable"
Створити файл:

<syntaxhighlight lang="bash">

Функція з аргументом:
echo "$HOME"
./script.sh hello world

</syntaxhighlight>

rm -r reports

Знайти файл:
Приклад умови:
Або:

</syntaxhighlight>

bash --version
</syntaxhighlight>
docker build -t app . Значення
<syntaxhighlight lang="bash">
Подивитися вміст:

</syntaxhighlight>

== Змінні середовища ==

ls /unknown 2> errors.log
'''Bash''' — один із найважливіших інструментів у Linux, DevOps і серверній розробці. Значення
'''Команда <code>rm</code> видаляє файли. Пояснення

<syntaxhighlight lang="bash">

mkdir -p "$backup_dir"
</syntaxhighlight>
else

<syntaxhighlight lang="bash">

mkdir reports
ls -la
</syntaxhighlight>

<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">
! Етап
</syntaxhighlight>

{| class="wikitable"

bash hello.sh

touch notes.txt

* backup бази даних;
* імпорт файлів;
* експорт звітів;
* архівування логів;
* запуск нічних обмінів;
* синхронізація каталогів;
* запуск міграцій;
* перевірка сервісів;
* моніторинг дискового простору;
* оновлення версій застосунку. '''У Bash немає кнопки “скасувати”. Приклад команд збірки:
|-
| <code>$0</code>
| Назва скрипта
|-
| <code>$1</code>
| Перший аргумент
|-
| <code>$2</code>
| Другий аргумент
|-
| <code>$@</code>
| Усі аргументи
|-
| <code>$#</code>
| Кількість аргументів
|}

Знайти файли, змінені за останню добу:

curl -X POST https://api.example.com/users \
#!/usr/bin/env bash

'''cron''' застосовується для для запуску задач за розкладом. це командна оболонка і мова скриптів. while [ "$count" -le 5 ]; do

curl -O https://example.com/file.zip
<blockquote>
== Для чого застосовується для Bash ==

docker logs container_name
[[Категорія:Linux]]
</syntaxhighlight>

</blockquote>

{| class="wikitable"

<syntaxhighlight lang="bash">
</syntaxhighlight>
{| class="wikitable"

</syntaxhighlight>

Типові команди Git у Bash:
</syntaxhighlight>
'''У Bash пробіли навколо <code>=</code> при присвоєнні змінної не ставляться.'''

</syntaxhighlight>

! '''curl''' застосовується для для HTTP-запитів і завантаження файлів. -name "*.tmp" -print0 | xargs -0 rm

curl https://example.com/install.sh | bash
{| class="wikitable"
</syntaxhighlight>
|-
| '''sh'''
| Bash має більше можливостей, але sh більш переносимий
|-
| '''Zsh'''
| Zsh зручніший як інтерактивна shell, Bash частіше застосовується для в скриптах
|-
| '''Fish'''
| Fish зручний для користувача, але не сумісний із Bash-синтаксисом
|-
| '''PowerShell'''
| PowerShell сильний у Windows і функціонує з обʼєктами, Bash сильний у Unix/Linux
|-
| '''Python'''
| Python краще для складної логіки, Bash краще для склеювання команд
|-
| '''Go'''
| Go краще для надійних CLI-утиліт, Bash швидший для простих скриптів
|}

{| class="wikitable"

<syntaxhighlight lang="bash">
'''awk''' застосовується для для обробки тексту й колонок. -mtime -1
Перебір файлів:

! Приклад:

kill 1234
== Коментарі ==
== chmod ==

Bash часто застосовується для в CI/CD.</syntaxhighlight>
== Робота з файлами ==
 echo "Usage: $0 <directory>"

Показати процеси:

echo "Backup completed: $backup_dir"
</syntaxhighlight>
== Bash і PostgreSQL backup ==

</syntaxhighlight>

</syntaxhighlight>
<syntaxhighlight lang="bash">
'''grep''' шукає текст. -type d
== Коли Bash — хороший вибір ==

</syntaxhighlight>

pytest
<syntaxhighlight lang="bash">
<syntaxhighlight lang="bash">

ls /unknown-folder

Відкрити crontab:

! Ці поняття часто плутають. Оператор
Клонування:
</syntaxhighlight>
== Pipes ==
<syntaxhighlight lang="bash">
Пошук без урахування регістру:

</syntaxhighlight>

</syntaxhighlight>

<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">
|
<syntaxhighlight lang="bash">

== Перший Bash-скрипт ==

set -euo pipefail
</syntaxhighlight>
say_hello() {

 echo "Більше ніж 10"

</syntaxhighlight>
crontab -e
<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">

Приклад:
done
 else

</blockquote>
== ssh ==
</syntaxhighlight>

! Чому це проблема
<syntaxhighlight lang="bash">

<syntaxhighlight lang="bash">

== Перша команда ==
<syntaxhighlight lang="bash">
</syntaxhighlight>
|-
| <code>-f file</code>
| існує звичайний файл
|-
| <code>-d dir</code>
| існує каталог
|-
| <code>-e path</code>
| шлях існує
|-
| <code>-r file</code>
| файл доступний для читання
|-
| <code>-w file</code>
| файл доступний для запису
|-
| <code>-x file</code>
| файл виконуваний
|}

echo "$sum"

<syntaxhighlight lang="bash">
== Безпечна робота зі скриптами ==
<syntaxhighlight lang="bash">
'''Для сучасних Bash-скриптів часто використовують <code>#!/usr/bin/env bash</code>, бо він шукає Bash через PATH.'''
fi
sed 's/old/new/g' file.txt
ps aux | grep nginx

! cp notes.txt backup/notes.txt

<syntaxhighlight lang="bash">

</blockquote>
fi
</syntaxhighlight>
</syntaxhighlight>

Порахувати кількість помилок:

! -name "*.tmp" | xargs rm
! Її треба виконувати тільки коли зрозуміло, що саме вона робить.'''
<syntaxhighlight lang="bash">

! Що означає

! Bash — це оболонка, яка всередині цього вікна виконує команди.'''
Інші приклади:
ps aux | grep nginx

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

./hello.sh
</syntaxhighlight>
== Перевірка файлів і каталогів ==
|-
| '''Назва'''
| Bash
|-
| '''Повна назва'''
| Bourne Again SHell
|-
| '''Тип'''
| Командна оболонка і мова скриптів
|-
| '''Походження'''
| дорожня карта розвитку Bourne shell
|-
| '''Основні системи'''
| Linux, Unix, macOS, BSD, WSL
|-
| '''Файли скриптів'''
| .sh, .bash
|-
| '''Головні сфери'''
| DevOps, Linux, сервери, CI/CD, автоматизація процесів, backup, deployment
|-
| '''Складність для новачків'''
| Низька для базових команд, середня для скриптів, висока для складної автоматизації
|-
| '''офіційний проєкт'''
| GNU Bash
|}

awk '{print $1}' access.log

<syntaxhighlight lang="bash">

<blockquote>

x=$((10 - 3))
</blockquote>
</syntaxhighlight>

Небезпечний підхід:

<syntaxhighlight lang="bash">
#!/usr/bin/env bash

name="Anna"

docker ps
</syntaxhighlight>

</blockquote>
== Недоліки Bash ==

'''Команда <code>rm -r</code> здатна видалити цілий каталог разом із файлами.'''
Безпечніше:
Або записати набір команд у файл:

== Приклад якісного Bash-скрипта ==

<syntaxhighlight lang="bash">

== Небезпечні команди ==
name="Anna"
== Порівняння чисел ==
|-
| '''Terminal'''
| Програма-вікно, через яку користувач системи вводить команди
|-
| '''Shell'''
| Командна оболонка, яка приймає й виконує команди
|-
| '''Bash'''
| Один із найпопулярніших різновидів shell
|-
| '''Shell script'''
| Файл із командами shell
|}

 echo "File: $file"
find . Недолік
#!/usr/bin/env bash

Або зробити файл виконуваним:

'''Pipes — одна з найсильніших ідей Bash: прості команди можна поєднувати в потужні ланцюжки.'''
echo "$PATH"

set -euo pipefail

== Exit code ==

df -h
== Коротко ==

<syntaxhighlight lang="bash">

Типові права:

echo "Exit code: $?"
#!/usr/bin/env bash

<syntaxhighlight lang="bash">

Запуск скрипта щодня о 02:00:
<syntaxhighlight lang="bash">
Приклад:

</syntaxhighlight>

Перевірити версію Bash:

! awk '{sum += $2} END {print sum}' data.txt
<syntaxhighlight lang="bash">
 echo "$item"
</blockquote>

say_hello() {

! Команда

! Це універсальний інструмент, який дає можливість перетворювати ручні дії в повторювані, контрольовані й автоматизовані процеси.'''
}
великих програм зі складною бізнес-логікою забезпечується через Bash не виступає як найкращим вибором; так само реалізовано але він незамінний для командного рядка, серверів і автоматизації. Bash-скрипт здатна приймати аргументи. -d "$directory" ]; then

! Термін
<blockquote>
</syntaxhighlight>
which bash
mkdir build && cd build

![[Категорія:Автоматизація]]
set -euo pipefail

Створити вкладені каталоги:

ShellCheck оптимізує знайти:
== Аргументи скрипта ==
== Простими словами ==

'''У Bash майже завжди краще писати змінні в подвійних лапках: <code>"$var"</code>.'''

Bash підтримує арифметичні вирази. 0 2 * * * /home/user/backup.sh

GET-запит:
</syntaxhighlight>
<syntaxhighlight lang="bash">

Формат:

{| class="wikitable"
<syntaxhighlight lang="bash">
find . Що вивчати
b=7

</syntaxhighlight>

'''Shebang''' — це перший рядок скрипта, який вказує, якою програмою запускати файл. count=15
 return 1
|-
| '''Linux-адміністрування'''
| Керування серверами, файлами, сервісами
| systemctl, journalctl, ssh
|-
| '''DevOps'''
| автоматизація процесів deployment, CI/CD, Docker
| deploy.sh, build.sh, backup.sh
|-
| '''Backend'''
| Запуск сервісів, тестів, міграцій
| npm, php artisan, python manage.py
|-
| '''Робота з файлами'''
| Пошук, копіювання, архівація
| find, cp, tar, rsync
|-
| '''Логи'''
| Аналіз журналів системи й застосунків
| grep, tail, awk, sed
|-
| '''Backup'''
| Резервне копіювання файлів і баз
| pg_dump, tar, rsync
|-
| '''CI/CD'''
| Команди збірки й тестування
| GitHub Actions, GitLab CI
|-
| '''ERP-інфраструктура'''
| Обміни, нічні задачі, імпорт/експорт
| cron, shell scripts, database dumps
|}

fi

</blockquote>

<syntaxhighlight lang="bash">

else

Перейменувати або перемістити:

env Bash — це мова команд для Linux/Unix-світу.</syntaxhighlight> ssh user@example.com

echo "Hello, $1"

</syntaxhighlight>

echo "Неповнолітній" Приклад: