Простые приложения на Bash
Простые приложения на Bash
Bash — оболочка и язык сценариев Linux/macOS/WSL. «Приложение» здесь — скрипт из команд и функций: бэкапы, разбор логов, health-check URL, пакетное переименование.
После первой программы и переменных.
Как запускать примеры из главы
- Сохраните скрипт в файл
.sh, напримерbackup.sh. - Сделайте исполняемым:
chmod +x backup.sh(Linux/macOS). - Запуск:
./backup.sh аргументыилиbash backup.sh аргументы.
Проверка: bash --version.
Резервное копирование файла
Как запустить
- Файл:
backup.sh - Команда:
bash backup.sh notes.txtили./backup.sh notes.txt - Результат: строка
OK: backups/...
#!/usr/bin/env bash
set -euo pipefail
source="${1:?укажите файл}"
backup_dir="${2:-backups}"
mkdir -p "$backup_dir"
stamp=$(date +%Y%m%d-%H%M%S)
cp -- "$source" "$backup_dir/${stamp}_$(basename "$source")"
echo "OK: $backup_dir/${stamp}_$(basename "$source")"
set -euo pipefail — скрипт падает при ошибке, неинициализированной переменной и в пайпе.
Сортировка и подсчёт строк файла
Как запустить
- Файл:
sort_lines.sh - Подготовка:
input.txt - Команда:
bash sort_lines.sh - Результат:
sorted.txtи число строк (wc).
#!/usr/bin/env bash
input="${1:-input.txt}"
output="${2:-sorted.txt}"
grep -v '^[[:space:]]*$' "$input" | sort -f > "$output"
wc -l "$output"
Проверка доступности URL (curl)
Как запустить
- Файл:
check_url.sh - Команда:
bash check_url.sh - Нужно:
curlв PATH, сеть. - Результат:
OK https://example.com (200)илиFAIL ....
#!/usr/bin/env bash
check_url() {
local url="$1"
local code
code=$(curl -o /dev/null -s -w '%{http_code}' --max-time 5 "$url" || echo "000")
if [[ "$code" =~ ^2 ]]; then
echo "OK $url ($code)"
else
echo "FAIL $url ($code)"
fi
}
check_url "https://example.com"
Поиск ошибок в логе
Как запустить
- Файл:
grep_errors.sh - Подготовка:
app.logили передайте путь аргументом. - Команда:
bash grep_errors.sh - Результат: до 20 последних строк с ERROR/FATAL.
#!/usr/bin/env bash
log="${1:-app.log}"
grep -E 'ERROR|FATAL|Exception' "$log" | tail -n 20
Пакетное переименование
Как запустить
- Файл:
rename.sh - Команда:
bash rename.shв каталоге с*.txt - Результат: файлы с префиксом
backup_.
#!/usr/bin/env bash
shopt -s nullglob
prefix="backup_"
for f in *.txt; do
mv -- "$f" "${prefix}${f}"
done
Мониторинг диска
Как запустить
- Файл:
disk_alert.sh - Команда:
bash disk_alert.sh - Результат: предупреждение, если занято ≥ 90% (порог в скрипте).
#!/usr/bin/env bash
df -h /
threshold=90
used=$(df / | awk 'NR==2 {gsub(/%/,"",$5); print $5}')
if (( used >= threshold )); then
echo "Внимание: диск заполнен на ${used}%"
fi
Простой «калькулятор»
Как запустить
- Файл:
calc.sh - Команда:
bash calc.sh - Нужно: интерактивный ввод
a,op,b. - Результат: целое число или сообщение об ошибке.
#!/usr/bin/env bash
read -r -p "a: " a
read -r -p "op (+ - * /): " op
read -r -p "b: " b
case "$op" in
+) echo "$((a + b))" ;;
-) echo "$((a - b))" ;;
\*) echo "$((a * b))" ;;
/) (( b != 0 )) && echo "$((a / b))" || echo "деление на ноль" ;;
*) echo "неизвестная операция" ;;
esac
Характерный пример — пайпы и подстановка
Как запустить
- Файл:
top_ips.sh - Подготовка:
access.log(формат common log). - Команда:
bash top_ips.sh - Результат: топ-5 IP по числу запросов.
#!/usr/bin/env bash
# Топ-5 IP в access.log
awk '{print $1}' access.log | sort | uniq -c | sort -nr | head -5
Цепочка утилит — идиома Unix; Bash связывает их в один сценарий.
См. также: файлы и процессы · функции
См. также
Другие статьи этого же раздела в боковом меню (как на странице «О разделе»). История развития оболочек представляет собой непрерывный процесс эволюции технологий. Каждая новая версия решала конкретные проблемы своих предшественников и добавляла новые возможности. Экосистема автоматизации на Bash - ключевые CLI-утилиты, пайплайны и сценарии для системных задач. Bash — это оболочка командной строки, являющаяся стандартным интерфейсом для взаимодействия пользователя с операционной системой в семействах Unix и Linux. Кавычки, точки, запятые, скобки и прочие знаки препинания. Ключевые слова и зарезервированные конструкции Bash - синтаксические блоки для управления логикой скриптов. Встроенные команды и функции оболочки - как работают builtins и когда они эффективнее внешних утилит. Переменные и подстановка в Bash - расширение параметров, область видимости и безопасная работа со значениями. Условные операторы и циклы в Bash - логические ветвления, повторения и контроль хода выполнения скрипта. Функции и локальные переменные в Bash - область видимости, параметры и организация переиспользуемых скриптов. Файловая система — это метод организации хранения данных на носителе информации, обеспечивающий упорядоченное размещение файлов и каталогов. Обработка ошибок в Bash базируется на нескольких основных подходах. Выбор метода зависит от контекста задачи и требований к надежности скрипта. Популярные утилиты Bash и примеры скриптов - диагностика процессов, обработка текста и автоматизация рутины.История оболочки Bash
Экосистема скриптов и автоматизации на Bash
Основы языка Bash
Синтаксис и специальные символы в Bash
Ключевые слова и зарезервированные конструкции
Встроенные команды и функции оболочки
Переменные и подстановка значений
Условные операторы и циклы в Bash
Функции и локальные переменные
Работа с файлами, каталогами и процессами
Обработка ошибок и коды возврата
Популярные утилиты и примеры скриптов