Задания для зачета по факультативу Unix shell

Для всех задач, преподаватель может засчитать частичное решение на основе субъективной оценки того, насколько вы были близки к корректному решению, и ваших соображений по поводу того, как работает то, что вы написали.

  1. Напишите программу, которая находит в заданном каталоге все исполняемые файлы, которые имеют более одного имени (или, что то же самое, все группы имен, которые являются жесткими или символическими линками на один и тот же исполняемый файл).
  2. Найдите самый длинный исполняемый файл во всех каталогах, входящих в PATH.
  3. Подсчитайте общее количество уникальных файлов и других объектов файловой системы (каталогов, символических связей и т.д., кроме записей . и ..) во всех каталогах, входящих в PATH (символическая ссылка считается самостоятельным уникальным объектом, жесткие ссылки на один файл - нет). Эта программа может создавать промежуточные файлы в /tmp и делать несколько проходов по каталогам.
  4. Выведите имена всех пользователей в системе, которым принадлежит хотя бы один файл с установленным битом setuid. Допускается игнорировать файлы в каталогах, к которым у вас нет доступа. Имена файлов и другие сообщения, в том числе сообщения об ошибках доступа к каталогам, выводить не следует.
  5. Напишите скрипт, который распечатывает свой собственный текст. Скрипт должен работать даже если он запущен не из текущего каталога, в том числе через поиск в PATH.