📝 Задания — Завершение работы со скриптами

К оглавлению урока

⚡ Список заданий

  1. testscript.sh — 5 Dir × 5 File + tar + распаковка
  2. pinger.sh — read -p, ping -c, awk avg
  3. md5check.sh — md5sum >> checksums.txt
  4. scriptmaker.sh — ls 2>/dev/null + if $? + chmod +x
  5. rename_ext.sh — [ -z ] + [ ! -d ] + for *.ext + mv

Задача 1 — testscript.sh

Создать скрипт testscript.sh, который выполняет следующее:

  • В каталоге /home создаст 5 каталогов с именами Dir1 … Dir5
  • В каждый из созданных каталогов создаст 5 файлов с интервалом 5 секунд с именами File1.txt … File5.txt
  • В каждый файл запишет текущее время в формате H-M-S
  • По окончании создания каждого каталога со списком файлов выводит на экран список файлов
  • Создаст сжатый tar-архив в каталоге /tmp/Arh с именем Arh-ТЕКУЩАЯ_ДАТА (формат d-m-y), в архив упакует все созданные каталоги
  • Создаст файл ArhList.txt со списком содержимого архива
  • Разархивирует архив в новый путь /opt/newfolder/, сохранит структуру каталогов

В скрипте предусмотреть возможность изменить пути для создания и распаковки архива (используем переменные).

Задача 2 — pinger.sh

Написать скрипт, который:

  • Запрашивает у пользователя адрес для пинга (read -p)
  • Запрашивает количество запросов для проверки
  • Выполняет пинг с указанным количеством запросов (ping -c "$count" "$address")
  • Возвращает среднее значение ответа в мс (через awk)

Задача 3 — md5check.sh

Написать скрипт по проверке целостности файлов в указанной директории:

  • Запросить у пользователя путь к директории для контроля
  • Запросить путь для сохранения результата
  • Создать директорию для результата (mkdir -p)
  • Для каждого файла: вывести имя файла и вычислить MD5-хэш, сохранить результат (md5sum ... >> checksums.txt)

Задача 4 — scriptmaker.sh

Написать скрипт, который:

  • Запрашивает у пользователя путь, где будет создан новый скрипт
  • Запрашивает имя для нового скрипта
  • Создаёт директорию для скрипта (если не существует)
  • Проверяет, существует ли уже файл с указанным именем
  • Если существует — выводит сообщение об ошибке
  • Если не существует — создаёт скрипт с шаблонным заголовком, назначает права исполнения, сообщает «DONE»

Задача 5 — rename_ext.sh

Написать скрипт, который:

  • Запрашивает директорию (или использует текущую при пустом вводе)
  • Запрашивает текущее и новое расширения файлов
  • Меняет расширение всех файлов с текущим расширением на новое

Вопросы для повторения

  1. Для чего нужны циклы в скрипте?
  2. Какими способами можно запускать bash-скрипты?
  3. Что делает 2>/dev/null после команды?
  4. Какое значение имеет $? после успешной команды?
  5. Чем отличается > от >> в контексте редиректа?