Индивидуальные задания к лабораторной работе "Скрипты оболочки Bash"

Вариант 1.

  1. Напишите скрипт, подсчитывающий количество скрытых файлов в домашнем каталоге пользователя. Поиск без захода в подкаталоги, скрытые каталоги не учитывать.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .doc. Напишите скрипт установки приложения, состоящего из этих файлов, выполняющий следующие действия:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib,
    • файл с расширением .doc помещается в каталог /usr/share/doc/фамилия
  3. Напишите скрипт, получающий от пользователя (любым способом ) имя каталога, расширение файлов и строку поиска. Скрипт должен найти все файлы с указанным расширением, содержащие указанную строку. Результат следует записать в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания по пятницам каждые полчаса.

Вариант 2

  1. Напишите скрипт, подсчитывающий количество скрытых подкаталогов в домашнем каталоге пользователя. Поиск без захода в подкаталоги, скрытые файлы не учитывать.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .conf. Напишите скрипт установки приложения, состоящего из этих файлов, выполняющий следующие действия:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib/фамилия ,
    • файл с расширением .conf помещается в каталог /etc/фамилия и в него заносится путь к установленной библиотеке и исполняемому файлу.
  3. Напишите скрипт, получающий от пользователя (двумя способами) имя приложения. Скрипт должен найти в каталоге /var/log/ и его подкаталогах все файлы в которых упоминается указанное приложение. Список найденных файлов следует записать в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания каждый час в пятницу 13 чсила любого месяца.

Вариант 3.

  1. Напишите скрипт, при помощи которого можно найти самый большой файл в домашнем каталоге пользователя. Поиск без захода в подкаталоги, скрытые файлы учитывать.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .conf. Напишите скрипт установки приложения, состоящего из этих файлов, выполняющий следующие действия:
    • файл без расширения помещается в каталог /opt/название, устанавливаются права на выполнение всем членам групп user и guest.
    • файл c расширением .lib помещается в каталог /usr/lib/название ,
    • файл с расширением .conf помещается в каталог /etc/фамилия и в него заносится путь к установленной библиотеке и исполняемому файлу.
  3. Напишите скрипт, получающий от пользователя (двумя способами) PID процесса. Скрипт должен определить название приложение, объем используемой памяти, владельца процесса и время его работы. Результат следует записать в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания каждый понедельник в 8:30.

Вариант 4

  1. Напишите скрипт, подсчитывающий размер не скрытых подкаталогов в домашнем каталоге пользователя и записывающую результат в виде таблицы в отдельный файл
  2. Создайте три файла один без расширения и два с расширениями: .lib, .res. Напишите скрипт установки приложения, состоящего из этих файлов:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib,
    • файл с расширением .res помещается в каталог /share/фамилия и в него заносится путь к установленной библиотеке и исполняемому файлу.
  3. Напишите скрипт, упаковывающий все файлы текущего каталога с одинаковыми расширениями в архив и размещающий этот архив в каталоге /var/backups/текущая дата. Поиск без захода в подкаталоги, скрытые файлы не учитывать. Например: для даты 01.02.2012 и каталога, в котором имеется 3 файла с расширением txt и пять файлов с расширением doc, в результате действия в скрипта в каталоге /var/backups/20120201 должны появиться два новых архива. Один с именем txt, другой с именем doc.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания по пятницам каждые полчаса.
  5. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания по четным числам каждого месяца в 12:00.

Вариант 5

  1. Напишите скрипт, подсчитывающий количество файлов в домашнем каталоге пользователя, созданных или измененных сегодня. Поиск с заходом в подкаталоги, скрытые подкаталоги не учитывать.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .doc. Напишите скрипт установки приложения, состоящего из этих файлов:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib,
    • файл с расширением .doc помещается в каталог /usr/share/doc/фамилия
  3. Напишите скрипт, получающий от пользователя (двумя способами) имя каталога и размер N в мегабайтах. Скрипт должен найти в указанном каталоге все файлы размера больше N, упаковать каждый из них в архив, удалить исходный файл и создать пустой файл с таким же именем. Отчет о выполненных скриптом действиях следует записать в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания каждый будний день в 12:00.

Вариант 6

  1. Напишите скрипт, создающий сводку по имеющимся файлам в текущем каталоге, с информацией: имя, расширение, дата изменения, права доступа, размер. Поиск с заходом в подкаталоги, скрытые подкаталоги не учитывать.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .conf. Напишите скрипт установки приложения, состоящего из этих файлов:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib/фамилия ,
    • файл с расширением .conf помещается в каталог /etc/фамилия и в него заносится путь к установленной библиотеке и исполняемому файлу.
  3. Напишите скрипт, получающий от пользователя (двумя способами) имя каталога. Скрипт должен использовать сравнить информацию о файлах, полученную в результате работы скрипта из первого задания с текущим состоянием файловой системы и все изменения записать в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания по выходным в 14:00 и в 19:00.

Вариант 7

  1. Создайте скрипт, печатающий сводку по указанному каталогу: количество текстовых файлов (*.txt), количество исполняемых файлов (установлен атрибут х), количество каталогов, и количество всех остальных файлов.
  2. Создайте три файла один без расширения и два с расширениями: .data, .cfg. Напишите скрипт установки приложения, состоящего из этих файлов:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .data помещается в каталог /home/ИмяПользователя/.фамилия ,
    • файл с расширением .cfg помещается в каталог /etc/фамилия и в него заносится путь к установленной библиотеке и исполняемому файлу.
  3. Измените скрипт из первого задания так, чтобы он получал от пользователя (двумя способами) имя каталога, а затем сравнивал информацию о файлах, полученную в результате предыдущего запуска (результаты предыдущего запуска следует сохранять в каталоге /home/ИмяПользователя/.фамилия) с текущим состоянием файловой системы и записывающий все изменения в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания по средам каждые 12 минут с 12 до 16 часов.

Вариант 8

  1. Создайте скрипт, который для всех файлов в указанном каталоге с расширением *.run, устанавливает атрибут х. Обязательно обрабатывать подкаталоги.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .res. Напишите скрипт установки приложения, состоящего из этих файлов:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib,
    • файл с расширением .res помещается в каталог /share/фамилия и в него заносится путь к установленной библиотеке и исполняемому файлу.
  3. Измените скрипт из первого задания так, чтобы он получал от пользователя (двумя способами) имя каталога, а затем выполнял необходимо действие с одновременной записью всех выполненных изменений в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего зимой в будние дни в 8:00.

Вариант 9

  1. Напишите скрипт, подсчитывающий размер не скрытых подкаталогов в домашнем каталоге пользователя и записывающую результат в виде таблицы в отдельный файл.
  2. Создайте три файла один без расширения и два с расширениями: .lib, .doc. Напишите скрипт установки приложения, состоящего из этих файлов, выполняющий следуюбщие действия:
    • файл без расширения помещается в каталог /usr/bin, устанавливаются права на выполнение всем членам группы user.
    • файл c расширением .lib помещается в каталог /usr/lib,
    • файл с расширением .doc помещается в каталог /usr/share/doc/фамилия
  3. Напишите скрипт, получающий от пользователя (любым способом ) имя каталога, расширение файлов и строку поиска. Скрипт должен найти все файлы с указанным расширением, содержащие указанную строку. Результат следует записать в файл /var/log/фамилия.log.
  4. При помощи утилиты cron настройте выполнение скрипта из предыдущего задания в летние выходные дни в 17:00.